高分懸賞在用vc對,高分懸賞!在用VC 對C S結構的Socket程式設計。

2021-04-25 12:01:16 字數 6767 閱讀 1408

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 火 又稱先格,是祖先留下來的,對人生影響不大 暗示 春日牡丹 才藝多能,智謀奇略,忍柔當事,鳴奏大功...

感情諮詢高分懸賞,感情諮詢 高分懸賞

我男朋友是我的初戀,可我卻不是他的,其實我也經常想,但是過去的事情已經過了,已經發生了,沒有什麼辦法,但是我男朋友總是對我說過去的已經過去了,沒有什麼,別放在心上,現在愛我才是最重要的,慢慢的我就很少會去想,你可以對你的男朋友說一下你現在的想法,說他現在才是你最重要的,過去的已經過去了,重要的是現在...