1. java能不能實現P2P下載平台
能實現文件傳輸功能。可以參照以下java設置方法:
java中的網路信息傳輸方式基於TCP協議和UD協議P的,socket是基於TCP協議的實現代碼如下:
import java.io.DataOutputStream;進口
import java.io.File;
import java.io.FileInputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
public class ClientTcpSend {
public static void main(String[] args) {
int length = 0;
byte[] sendBytes = null;
Socket socket = null;
DataOutputStream dos = null;
FileInputStream fis = null;
try {
try {
socket = new Socket();套接字=新的套接字
socket.connect(new InetSocketAddress("127.0.0.1", 33456),
dos = new DataOutputStream(socket.getOutputStream());
File file = new File("/root/6674541037_c3a9c8b64c_b.jpg");
Ffis = new FileInputStream(file);
sendBytes = new byte[1024];
while ((length = fis.read(sendBytes, 0, sendBytes.length)) > 0) {
dos.write(sendBytes, 0, length);
dos.flush();
}
} finally {
if (dos != null)
dos.close();
if (fis != null)
fis.close();
if (socket != null)
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
2. 基於java的p2p實現文件共享和傳輸
C++ Socket網路編程大全
1.簡單伺服器
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA sServer,sClient;
chat buf[1024];
int retVal;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失敗
}
sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sServer)
{
WSACleanup();
return -1;//創建套接字失敗
}
SOCKADDR_IN addrServ;
addrServ.sin_family=AF_INET;
addrServ.sin_port=htons(%%1);
addrServ.sin_addr.s_addr=INADDR_ANY;
retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//綁定套接字失敗
}
retVal=listen(sServer,1);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//開始監聽失敗
}
sockaddr_in addrClient;
int addrClientlen=sizeof(addrClient);
sClient=accept(sServer,(sockaddr FAR*)&addrClient,&addClientlen);
if(INVALID_SOCKET==sClient)
{
closesocket(sServer);
WSACleanup();
return -1;//開始接受客戶端連接失敗
}
ZeroMemory(buf,sizeof(buf));
retVal=recv(sClient,buf,sizeof(buf));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return -1;//接收數據失敗
}
CString %%2(buf);
closesocket(sServer);
closesocket(sClient);
WSACleanup();
2.簡單客戶端
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA sHost;
SOCKADDR_IN addrServ;
chat buf[1024];
int retVal;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失敗
}
sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sHost)
{
WSACleanup();
return -1;//創建套接字失敗
}
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons((short)%%2);
int nServAddlen=size(servAddr);
retVal=connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));
if(SOCKET_ERROR==retVal)
closesocket(sHost);
WSACleanup();
return -1;//連接伺服器失敗
}
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
retVal=send(sHost,buf,sizeof(buf),0);
if(SOCKET_ERROR==retVal)
{
closesocket(sHost);
WSACleanup();
return -1;//向伺服器發送數據失敗
}
closesocket(sHost);
WSACleanup();
3.獲得本機IP
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
/*
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失敗
}
*/
//#pragma comment(lib,"WS2_32.lib")
char szHostname[100],szHostaddress[200];
if(gethostname(szHostname,info(szHostname))!=SOCKET_ERROR)
{
HOSTENT *pHostEnt=gethostbyname(szHostname);
if(pHostEnt!=NULL){
sprintf(szHostaddress,"%d.%d.%d.%d",
( pHostEnt->h_addr_list[0][0]&0x00ff ),
( pHostEnt->h_addr_list[0][1]&0x00ff ),
( pHostEnt->h_addr_list[0][2]&0x00ff ),
( pHostEnt->h_addr_list[0][3]&0x00ff ));
}
}
else
return;
CString %%1(szHostaddress);
4.端對端通信
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET s;
char buf[1024];
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失敗
}
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
return -1;//創建套接字失敗
}
SOCKADDR_IN servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons(INADDR_ANY);
if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//綁定套接字失敗
}
int nServAddrlen=sizeof(servAddr);
ZeroMemory(buf,sizeof(buf));
if(recvfrom(s,buf,size(buf),0,(SOCKADDR*)&servAddr,nServAddrlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//接收數據失敗
}
CString %%2(buf);
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
SOCKADDR_IN clientAddr;
clientAddr.sin_family=AF_INET;
clientAddr.sin_addr.s_addr=inet_addr(%%4);
clientAddr.sin_port=htons((short)%%5);
int nClientlen=size(clientAddr);
if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//向伺服器發送數據失敗
}
closesocket(s);
WSACleanup();
5.點對點通信
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKADDR_IN addrServ,addrServ2;
SOCKET sServer,sClient,sHost;
int retVal;
sockaddr_in addrClient;
char buf[1024];
static UINT port=%%2;
BOOL listenerRun=TRUE;
UINT Listen(LPVOID pParam)
{
addrServ.sin_family=AF_INET;
addrServ.sin_port=htons((UINT)pParam);
addrServ.sin_addr.s_addr=INADDR_ANY;
retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//綁定套接字失敗
}
retVal=listen(sServer,1);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//開始監聽失敗
}
int addrClientlen=sizeof(addrClient);
sClient=accept(sServer,(sockaddr FAR*)&addrClient,&addClientlen);
if(INVALID_SOCKET==sClient)
{
closesocket(sServer);
WSACleanup();
return -1;//接收客戶端請求失敗
}
while(listenerRun)
{
ZeroMemory(buf,sizeof(buf));
retVal=recv(sClient,buf,sizeof(buf));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return -1;//接收客戶端數據失敗
}
CString %%4(buf);
}
}
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失敗
}
sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sServer)
{
WSACleanup();
return -1;//創建套接字失敗
}
CWinThread *pThread=AfxBeginThread(Listen,&port);
sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sHost)
{
WSACleanup();
return -1;//創建套接字失敗
}
servAddr2.sin_family=AF_INET;
servAddr2.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons((short)%%3);
int nServerAddrlen=sizeof(servAddr2);
retVal=connect(sHost,(LPSOCKADDR)&servAddr2,sizeof(servAddr2));
if(SOCKET_ERROR==retVal)
{
closesocket(sHost);
WSACleanup();
return -1;//連接失敗
}
zeroMemory(buf,sizeof(buf));
strcpy(buf,%%5);
retVal=send(sHost,buf,sizeof(buf),0);
if(SOCKET_ERROR==retVal)
{
closesocket(sHost);
WSACleanup();
return -1;//向發送數據失敗
}
listenerRun=FALSE;
DWORD dwExitCode;
::GetExitCodeThread(pThread->m_hThread,&dwExitCode);
pThread=null;
closesocket(sServer);
closesocket(sClient);
closesocket(sHost);
WSACleanup();
6.UDP對時伺服器端
7.UDP對時客戶端
8.點對點傳輸文件
9.發送郵件
/*
#import <cdonts.dll>
#include "tchar.h"
#include "stdio.h"
*/
CoInitialize(NULL);
try
{
CDONTS::INewMailPtr spNewMail(__uuidof(CDONTS::NewMail));
spNewMail->From = _T("YourName");
spNewMail->To = _T("[email protected]");
spNewMail->Subject = _T("Testing");
spNewMail->Body = _T("Put your message here");
spNewMail->AttachFile(_variant_t(_bstr_t("C:\\tmp\\test\\mail\\mail.cpp")),_variant_t((long)DISP_E_PARAMNOTFOUND, VT_ERROR),_variant_t((long)DISP_E_PARAMNOTFOUND, VT_ERROR));
spNewMail->Send();
printf("send ok");
}
catch(_com_error &ComError)
{
printf("%s\n",ComError.Description());
}
CoUninitialize();
10.接收郵件
利用JMail組件快速構建郵件程序
http://www.vckbase.com/document/viewdoc/?id=684
http://www.vckbase.com/document/viewdoc/?id=712
11.多線程阻塞通信
12.多線程非阻塞通信
13.多線程文件斷點續傳
14.多線程多文件斷點續傳
15.截取屏幕
HBITMAP CopyScreenToBitmap(LPRECT lpRect)
//lpRect 代表選定區域
{
HDC hScrDC, hMemDC;
// 屏幕和內存設備描述表
HBITMAP hBitmap, hOldBitmap;
// 點陣圖句柄
int nX, nY, nX2, nY2;
// 選定區域坐標
int nWidth, nHeight;
// 點陣圖寬度和高度
int xScrn, yScrn;
// 屏幕解析度
// 確保選定區域不為空矩形
if (IsRectEmpty(lpRect))
return NULL;
//為屏幕創建設備描述表
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
//為屏幕設備描述表創建兼容的內存設備描述表
hMemDC = CreateCompatibleDC(hScrDC);
// 獲得選定區域坐標
nX = lpRect- >left;
nY = lpRect- >top;
nX2 = lpRect- >right;
nY2 = lpRect- >bottom;
// 獲得屏幕解析度
xScrn = GetDeviceCaps(hScrDC, HORZRES);
yScrn = GetDeviceCaps(hScrDC, VERTRES);
//確保選定區域是可見的
if (nX 〈0)
nX = 0;
if (nY 〈 0)
nY = 0;
if (nX2 > xScrn)
nX2 = xScrn;
if (nY2 > yScrn)
nY2 = yScrn;
nWidth = nX2 - nX;
nHeight = nY2 - nY;
// 創建一個與屏幕設備描述表兼容的點陣圖
hBitmap = CreateCompatibleBitmap
(hScrDC, nWidth, nHeight);
// 把新點陣圖選到內存設備描述表中
hOldBitmap = SelectObject(hMemDC, hBitmap);
// 把屏幕設備描述表拷貝到內存設備描述表中
BitBlt(hMemDC, 0, 0, nWidth, nHeight,
hScrDC, nX, nY, SRCCOPY);
//得到屏幕點陣圖的句柄
hBitmap = SelectObject(hMemDC, hOldBitmap);
//清除
DeleteDC(hScrDC);
DeleteDC(hMemDC);
// 返回點陣圖句柄
return hBitmap;
}
得到屏幕點陣圖句柄以後,我們
可以把屏幕內容粘貼到剪貼板上.
if (OpenClipboard(hWnd))
//hWnd為程序窗口句柄
{
//清空剪貼板
EmptyClipboard();
//把屏幕內容粘貼到剪貼板上,
hBitmap 為剛才的屏幕點陣圖句柄
SetClipboardData(CF_BITMAP, hBitmap);
//關閉剪貼板
CloseClipb
oard();
}
我們也可以把屏幕內容以點陣圖格式存到磁碟文件上.
int SaveBitmapToFile(HBITMAP hBitmap ,
LPSTR lpFileName) //hBitmap 為剛才的屏幕點陣圖句柄
{ //lpFileName 為點陣圖文件名
HDC hDC;
//設備描述表
int iBits;
//當前顯示解析度下每個像素所佔位元組數
WORD wBitCount;
//點陣圖中每個像素所佔位元組數
//定義調色板大小, 點陣圖中像素位元組大小 ,
點陣圖文件大小 , 寫入文件位元組數
DWORD dwPaletteSize=0,
dwBmBitsSize,
dwDIBSize, dwWritten;
BITMAP Bitmap;
//點陣圖屬性結構
BITMAPFILEHEADER bmfHdr;
//點陣圖文件頭結構
BITMAPINFOHEADER bi;
//點陣圖信息頭結構
LPBITMAPINFOHEADER lpbi;
//指向點陣圖信息頭結構
HANDLE fh, hDib, hPal,hOldPal=NULL;
//定義文件,分配內存句柄,調色板句柄
//計算點陣圖文件每個像素所佔位元組數
hDC = CreateDC("DISPLAY",NULL,NULL,NULL);
iBits = GetDeviceCaps(hDC, BITSPIXEL) *
GetDeviceCaps(hDC, PLANES);
DeleteDC(hDC);
if (iBits 〈 = 1)
wBitCount = 1;
else if (iBits 〈 = 4)
wBitCount = 4;
else if (iBits 〈 = 8)
wBitCount = 8;
else if (iBits 〈 = 24)
wBitCount = 24;
//計算調色板大小
if (wBitCount 〈 = 8)
dwPaletteSize = (1 〈 〈 wBitCount) *
sizeof(RGBQUAD);
//設置點陣圖信息頭結構
GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap);
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = Bitmap.bmWidth;
bi.biHeight = Bitmap.bmHeight;
bi.biPlanes = 1;
bi.biBitCount = wBitCount;
bi.biCompression = BI_RGB;
bi.biSi
zeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;
dwBmBitsSize = ((Bitmap.bmWidth *
wBitCount+31)/32)* 4
*Bitmap.bmHeight ;
//為點陣圖內容分配內存
hDib = GlobalAlloc(GHND,dwBmBitsSize+
dwPaletteSize+sizeof(BITMAPINFOHEADER));
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
*lpbi = bi;
// 處理調色板
hPal = GetStockObject(DEFAULT_PALETTE);
if (hPal)
{
hDC = GetDC(NULL);
hOldPal = SelectPalette(hDC, hPal, FALSE);
RealizePalette(hDC);
}
// 獲取該調色板下新的像素值
GetDIBits(hDC, hBitmap, 0, (UINT) Bitmap.bmHeight,
(LPSTR)lpbi + sizeof(BITMAPINFOHEADER)
+dwPaletteSize,
(BITMAPINFOHEADER *)
lpbi, DIB_RGB_COLORS);
//恢復調色板
if (hOldPal)
{
SelectPalette(hDC, hOldPal, TRUE);
RealizePalette(hDC);
ReleaseDC(NULL, hDC);
}
//創建點陣圖文件
fh = CreateFile(lpFileName, GENERIC_WRITE,
0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL FILE_
FLAG_SEQUENTIAL_SCAN, NULL);
if (fh == INVALID_HANDLE_VALUE)
return FALSE;
// 設置點陣圖文件頭
bmfHdr.bfType = 0x4D42; // "BM"
dwDIBSize = sizeof(BITMAPFILEHEADER)
+ sizeof(BITMAPINFOHEADER)
+ dwPaletteSize + dwBmBitsSize;
bmfHdr.bfSize = dwDIBSize;
bmfHdr.bfReserved1 = 0;
bmfHdr.bfReserved2 = 0;
bmfHdr.bfOffBits = (DWORD)sizeof
(BITMAPFILEHEADER)
+ (DWORD)sizeof(BITMAPINFOHEADER)
+ dwPaletteSize;
// 寫入點陣圖文件頭
WriteFile(fh, (LPSTR)&bmfHdr, sizeof
(BITMAPFILEHEADER), &dwWritten, NULL);
// 寫入點陣圖文件其餘內容
WriteFile(fh, (LPSTR)lpbi, dwDIBSize,
&dwWritten, NULL);
//清除
GlobalUnlock(hDib);
GlobalFree(hDib);
CloseHandle(fh);
}
3. 建設p2p網站製作的流程是什麼
首先要明確自己的目標,搜集相關資料。建設P2P平台的目標已經確定,我們則需要搜集相關的資料,比如P2P平台建設,P2P小貸系統平台的用戶需求,小貸系統平台的發展前景等等,其中迪蒙P2P系統功能可支持P2P等多種業務模式,並可提供個性化需求定製,在這一階段需要制定出整個P2P平台開發所需要的人力、物力、費用以及時間等等,還需要制定出整個借貸平台程序的架構圖,模塊,資料庫的製作等等,根據計劃,開始製作P2P平台系統。前台頁面設計,後台程序編程,資料庫表格的設計等等。這些都需要一個開發技術團隊合力完成。其中,P2P網站建設步驟流程可以參考迪蒙P2P建站流程步驟,有以下幾點:
一、清晰的網站目標定位;
二、注冊域名;(注冊域名需要記住三點:1、簡單易記憶。2、突出網站類別。3、域名類別的選擇)
三、伺服器的選擇;
四、網站製作;(這里就稍微注意一下這幾個方面:1.源碼的選擇,PS:最好使用JAVA語言,畢竟網站更多的考慮安全性能這塊。2.網站安裝。3.網站結構的設計。4.關鍵字的選擇。)
4. 誰有一套完整的Java版p2p網貸系統的源碼
現在基本都是JAVA語言開發的,系統是用JAVA開發,提供源代碼,或及時的維專護服務;安全保障屬措施;系統功能全面,特別是內部控制與會計核算與管理功能,這有許多系統是不具備的;有提前還本付息、逾期計息與結轉本金,部分及多次轉讓等金融功能,這也大部分做不完善;建議你找專業做這項業務的公司比如迪蒙指導等來做,像迪蒙網貸系統就是java開發的而且優勢也多:Java通過JDBC來訪問資料庫,介面比較統一。java跨平台性比較好;開發成本方面相對低;代碼安全規范。讓他們給你把關,它幫你砍一點價或讓你少走一點彎路或讓你快早上線或快速提升人氣,遠比你自己瞎弄強。
5. p2p網貸平台系統都是用什麼語言開發的熟知的語言有C++,java.
你好!p2p網貸復系統開發制中,有用Java語言開發的,有用php語言開發,還有的用c語言開發等。使用優勢最為明顯的是java語言。為什麼說java語言的優勢最為明顯,其最大的優勢是安全性。網貸系統注重的就是其安全性,所以選擇使用java語言開發在明顯不過了。使用java語言開發,增加驗檢查錯誤的功能,方便二次開發和修改,這也是一個很明顯的優勢。所以Java語言有足夠多的優點供p2p網貸系統選為開發語言。以上內容來源迪蒙網貸系統網路內容,供學習參考,望採納!