windows:
TCP通信:
//client
#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 sockClient = 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(8000);
connect(sockClient ,(SOCKADDR*)&addrSrv ,sizeof(SOCKADDR ));
//接收数据;
char recvBuf[100];
recv(sockClient ,recvBuf,100,0) ;
printf("recv :%s",recvBuf) ;
send(sockClient ,"this is the client ",strlen("this is the client ") +1,0) ;
closesocket(sockClient) ;
WSACleanup ();
}
//server.cpp
#include <Winsock2.h>
#include <stdio.h>
void main()
{
//
WORD wVersionReguested ;
WSADATA wsaData ;
int err;
wVersionReguested = MAKEWORD( 1 ,1 );
err = WSAStartup(wVersionReguested ,&wsaData ) ;
if( err !=0 )
{
return ;
}
if(LOBYTE(wsaData.wVersion )!=1 || HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup() ;
return ;
}
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(8000) ;
//绑定套接字
bind(sockSrv ,(SOCKADDR *)&addrSrv ,sizeof(SOCKADDR) );
listen(sockSrv,5) ;
SOCKADDR_IN addrClient ;
int len = sizeof(SOCKADDR) ;
while(1)
{
//等待客户请求的到来;
SOCKET sockConn = accept(sockSrv ,(SOCKADDR*)&addrClient ,&len );
char sendBuf[100];
sprintf(sendBuf,"welcom %s here !\n",inet_ntoa(addrClient.sin_addr));
//发送数据
send(sockConn ,sendBuf ,strlen(sendBuf)+1,0) ;
char recvBuf[100];
recv(sockConn, recvBuf,100,0);
printf("recv: %s\n",recvBuf) ;
closesocket(sockConn) ;
}
}
UDP通信
服务端:
#include <stdio.h>
#include "winsock2.h"
void server() {
WSADATA wsaData;