偶然看到乙個簡單可用的socket通訊示例程式,借助winsock靜態庫的功能,**風格很類似linux下的套介面程式設計
伺服器端
#include#include#pragma comment(lib,"ws2_32.lib")
void main()
if ( lobyte( wsadata.wversion ) != 1 ||
hibyte( wsadata.wversion ) != 1 )
/* * 初始化網路套介面
*/ socket socksrv=socket(af_inet,sock_stream,0);
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));
listen(socksrv,5);
sockaddr_in addrclient;
int len=sizeof(sockaddr);
/* * 等待通訊
*/ while (1)
}
客戶端
#include#include#pragma comment(lib,"ws2_32.lib")
void main()
if ( lobyte( wsadata.wversion ) != 1 || hibyte( wsadata.wversion ) != 1 )
/* * 初始化網路套介面
*/ socket sockclient=socket(af_inet,sock_stream,0);
/* * 設定傳送超時時間和接收超時時間
*/ int timeout=6000;
if(::setsockopt(sockclient,sol_socket,so_sndtimeo,(char *)&timeout,sizeof(timeout))==socket_error)
timeout=6000;
if(::setsockopt(sockclient,sol_socket,so_rcvtimeo,(char *)&timeout,sizeof(timeout))==socket_error)
/* * 設定非阻塞
*/ //unsigned long ul = 1;
//err = ioctlsocket(sockclient, fionbio, (unsigned long*)&ul);
//if(err==socket_error)return;
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
connect(sockclient,(sockaddr *)&addrsrv,sizeof(sockaddr));
/* * 通訊
*/ char recvbuffer[100];
recv(sockclient,recvbuffer,100,0);
printf("%s\n",recvbuffer);
send(sockclient,"this is kary",strlen("this is kary")+1,0);
closesocket(sockclient);
wsacleanup();
}
winsock程式設計
伺服器端 include include pragma comment lib,ws2 32.lib using namespace std void do service socket conn while 1 不斷接收客戶端傳送的資料 if lobyte wsadata.wversion 2 h...
winSock網路程式設計 協議的簡單示例(P)
1.關於udp udp相對於tcp而言,它是不可靠的協議,不是有話說,任何存在的東西總有其優點所在 嗎?udp雖然可靠性不夠高,但傳輸效率卻很高,速度也很快,所以用的也很多。2.通訊前的注意工作 因為採用基於windows套介面的程式設計,通訊前,要進行初始化windows sockets服務。用w...
Winsock程式設計框架
microsoft的windows sockets api是windows下的網路應用程式介面,為了適用於 windows下的訊息機制和非同步的i o選擇操作,windows sockets api在功能上擴充了將近 20個函式,其中擴充的部分均冠以字首wsa windows sockets asy...