1樓:祚胤
你的要求太複雜了,我只能給些簡單的例子,給有時間的朋友按你的要求組合一下。
1.簡單伺服器
/*#include
#pragma comment(lib,"ws2_32.lib")
*/wsadata wsd;
static uint port=%%1;
uint listen(lpvoid pparam)
sserver=socket(af_inet,sock_stream,ipproto_tcp);
if(invalid_socket==sserver)
sockaddr_in addrserv;
addrserv.sin_family=af_inet;
addrserv.sin_port=htons((short)pparam);
addrserv.sin_addr.s_addr=inaddr_any;
if(socket_error==retval)
retval=listen(sserver,1);
if(socket_error==retval)
sockaddr_in addrclient;
int addrclientlen=sizeof(addrclient);
if(invalid_socket==sclient)
zeromemory(buf,sizeof(buf));
retval=recv(sclient,buf,sizeof(buf),0);
if(socket_error==retval)
cstring %%2(buf);
closesocket(sserver);
closesocket(sclient);
wsacleanup();
return 0;
2.簡單客戶端
/*#include
#pragma comment(lib,"ws2_32.lib")
*/wsadata wsd;
socket shost;
sockaddr_in servaddr;
char buf[1024];
int retval;
shost=socket(af_inet,sock_stream,ipproto_tcp);
if(invalid_socket==shost)
servaddr.sin_family=af_inet;
servaddr.sin_addr.s_addr=inet_addr(%%3);
servaddr.sin_port=htons((short)%%2);
int nservaddlen=sizeof(servaddr);
if(socket_error==retval)
zeromemory(buf,sizeof(buf));
strcpy(buf,%%3);
retval=send(shost,buf,sizeof(buf),0);
if(socket_error==retval)
closesocket(shost);
wsacleanup();
3.獲得本機ip
/*#include
#pragma comment(lib,"ws2_32.lib")
*/wsadata wsd;
char szhostname[100],szhostaddress[200];
if(gethostname(szhostname,sizeof(szhostname))!=socket_error)
}else
return;
cstring %%1(szhostaddress);
4.端對端通訊
/*#include
#pragma comment(lib,"ws2_32.lib")
*/wsadata wsd;
socket s;
char buf[1024];
s=socket(af_inet,sock_dgram,0);
if(s==invalid_socket)
sockaddr_in servaddr;
servaddr.sin_family=af_inet;
servaddr.sin_addr.s_addr=inet_addr(%%1);
servaddr.sin_port=htons(inaddr_any);
int nservaddrlen=sizeof(servaddr);
zeromemory(buf,sizeof(buf));
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=sizeof(clientaddr);
closesocket(s);
wsacleanup();
5.點對點通訊
/*#include
#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)
retval=listen(sserver,1);
if(socket_error==retval)
int addrclientlen=sizeof(addrclient);
if(invalid_socket==sclient)
while(listenerrun)
cstring %%4(buf);}}
sserver=socket(af_inet,sock_stream,ipproto_tcp);
if(invalid_socket==sserver)
shost=socket(af_inet,sock_stream,ipproto_tcp);
if(invalid_socket==shost)
servaddr2.sin_family=af_inet;
servaddr2.sin_addr.s_addr=inet_addr(%%1);
servaddr.sin_port=htons((short)%%3);
int nserveraddrlen=sizeof(servaddr2);
if(socket_error==retval)
zeromemory(buf,sizeof(buf));
strcpy(buf,%%5);
retval=send(shost,buf,sizeof(buf),0);
if(socket_error==retval)
listenerrun=false;
dword dwexitcode;
::getexitcodethread(pthread->m_hthread,&dwexitcode);
pthread=null;
closesocket(sserver);
closesocket(sclient);
closesocket(shost);
wsacleanup();
6.udp對時伺服器端
/*#include
#pragma comment(lib,"ws2_32.lib")
*/wsadata wsd;
socket s;
char buf[1024];
s=socket(af_inet,sock_dgram,0);
if(s==invalid_socket)
sockaddr_in servaddr;
servaddr.sin_family=af_inet;
servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
servaddr.sin_port=htons(5000);
int nservaddrlen=sizeof(servaddr);
zeromemory(buf,sizeof(buf));
cstring str(buf);
if(str=="timenow")
}closesocket(s);
wsacleanup();
7.udp對時客戶端
/*#include
#pragma comment(lib,"ws2_32.lib")
*/wsadata wsd;
socket s;
char buf[1024];
s=socket(af_inet,sock_dgram,0);
if(s==invalid_socket)
sockaddr_in servaddr;
servaddr.sin_family=af_inet;
servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
servaddr.sin_port=htons(2000);
int nservaddrlen=sizeof(servaddr);
zeromemory(buf,sizeof(buf));
cstring ss="timenow";
strcpy(buf,ss);
sockaddr_in clientaddr;
clientaddr.sin_family=af_inet;
clientaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
clientaddr.sin_port=htons((short)5000);
int nclientlen=sizeof(clientaddr);
memset(buf,0,1024);
systemtime systime;
memcpy(&systime,buf,16);
setlocaltime(&systime);//設定本地與伺服器時間同步。
closesocket(s);
wsacleanup();
高分懸賞大家,高分懸賞,大家進來
第一看 這很重要,貴的就是有理由,如果 一樣,還是第二件好,越是花裡胡哨的越品位差點 第一件給人感覺酷酷,很前衛,適合年輕人。第二件大眾化點 要說品味還是第二件,明顯版式比第一件好看,個人認為 第一件時尚,嘻哈。第二件簡單,常規。對於你說的品味,個人覺得是找到適合自己風格的衣服,並且學會穿衣搭配,好...
幫忙起名,高分懸賞高分懸賞,幫忙起名
姓名 閔冠翔 筆畫分別是 12 水 9 木 12 土 天格.人格.地格.總格.外格數分別 13 火 21 木 21 木 33 火 13 火 總評數理得分 100 分 吉 詳細解說如下 天格數理 13 火 又稱先格,是祖先留下來的,對人生影響不大 暗示 春日牡丹 才藝多能,智謀奇略,忍柔當事,鳴奏大功...
感情諮詢高分懸賞,感情諮詢 高分懸賞
我男朋友是我的初戀,可我卻不是他的,其實我也經常想,但是過去的事情已經過了,已經發生了,沒有什麼辦法,但是我男朋友總是對我說過去的已經過去了,沒有什麼,別放在心上,現在愛我才是最重要的,慢慢的我就很少會去想,你可以對你的男朋友說一下你現在的想法,說他現在才是你最重要的,過去的已經過去了,重要的是現在...