Server:
/*
服务器端程序
*/
#include <WINSOCK2.H>
#include <STRING.H>
#include <WINDOWS.H>
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsaData;
//初始化ws2_32库
WSAStartup(MAKEWORD(2,2),&wsaData);
//创建服务器套接字
SOCKET ServerSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//创建服务器套接字地址结构
sockaddr_in sin;
sin.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sin.sin_family=AF_INET;
sin.sin_port=htons(123);
//绑定IP、端口
bind(ServerSock,(SOCKADDR*)&sin,sizeof(sin));
//使服务器端处于监听状态
listen(ServerSock,1);
//创建客户端套接字
SOCKET ClientSock;
//创建客户端套接字地址结构
SOCKADDR ClientAddr;
int sizeClientAddr=sizeof(ClientAddr);
//在服务器套接字接受一个连接
ClientSock=accept(ServerSock,&ClientAddr,&sizeClientAddr);
char str[]="This is a message from server.\n";
//向客户端发送数据
send(ClientSock,str,strlen(str),NULL);
//关闭客户端套接字
closesocket(ClientSock);
//关闭服务器套接字
closesocket(ServerSock);
//释放ws2_32库
WSACleanup();
system("pause");
return 0;
}
Client:
/*
客户端程序
*/
#include <WINSOCK2.H>
#include <STDIO.H>
#include <WINDOWS.H>
#pragma comment(lib,"ws2_32.lib")
int main()
{
char str_buf[100]="";
WSADATA wsaData;
//初始化ws2_32库
WSAStartup(MAKEWORD(2,2),&wsaData);
//创建服务器套接字
SOCKET ServerSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//创建服务器套接字地址结构
sockaddr_in sin;
sin.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sin.sin_family=AF_INET;
sin.sin_port=htons(123);
//向服务器发起连接请求
connect(ServerSock,(SOCKADDR*)&sin,sizeof(sin));
//接收服务器端的返回数据
recv(ServerSock,str_buf,sizeof(str_buf)/sizeof(char),NULL);
printf("%s\n",str_buf);
//关闭服务器套接字
closesocket(ServerSock);
//释放ws2_32库
WSACleanup();
system("pause");
return 0;
}
Socket模型: