面向無連接的UDP網路編程與TCP相比不用listen監聽,不需要accp接受客戶端請求
(1)服務器端程序
#include<WinSock2.h>
#include<stdio.h>
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//客戶端程序,向服務器端發送請求//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return;
}
if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return;
}
//以上部分是初始化部分,打開SOCKET庫
SOCKET socketClient=socket(AF_INET,SOCK_STREAM,0);
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(socketClient,(sockaddr*)&addrSrv,sizeof(SOCKADDR));//建立連接請求
char recvBuf[100];
recv(socketClient,recvBuf,100,0);//接收服務器的信息
printf("%s\n",recvBuf);
send(socketClient,"this is zhangsan",strlen("this is zhangsan")+1,0);//像服務器發送信息
closesocket(socketClient);//關閉套接字
WSACleanup();//關閉WSA
}
(2)客戶端程序
#include<winsock2.h>
#include<stdio.h>
////////////////////////////////////////////////////////////////////////////////////////////////////
//基於UDP的面向無連接的客戶端程序//
///////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
/*用WSASTARTUP來啓動有關socket的動態鏈接庫*/
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
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);//設置要請求的服務器的 IP地址及端口信息
sendto(sockClient,"HELLO WORLD",sizeof("HELLO WORLD")+1,0,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
closesocket(sockClient);//關閉套接字
WSACleanup();//關係WSA
}
關於具體的UDP和TCP的區別讀者可以結合上一篇文章自己總結