文档介绍:-
. z.
专业:[通 信 工 程]
学生姓名:[ z.
{
//从效劳器端接收数据
iLen=recv(sClient,buf,sizeof(buf),0);
if(iLen==0)
return;
else if(iLen==SOCKET_ERROR)
{
printf("recv() Failed:%d",WSAGetLastError());
return;
}
printf("recv() data from server:%s\n",buf);
}
closesocket(sClient);
WSACleanup();
}
Server:
#include<>
#include<>
#include<>
#pragma comment(lib,"")
//效劳器使用的端口号为5050
#define DEFAULT_PORT 5050
void main()
{
int iPort=DEFAULT_PORT;
WSADATA wsaData;
SOCKET sListen,
sAccept;
//客户端地址长度
int iLen;
//发送的数据长度
int iSend;
//要发送给客户端的信息
char buf[]="I am a server.";
//效劳器和客户端的IP地址
struct sockaddr_in ser,
cli;
printf("---------------------------\n");
printf("Server waiting\n");
printf("---------------------------\n");
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
-
. z.
{
printf("Failed to load Winsock.\n");
return;
}
//创立效劳器端套接口
sListen=socket(AF_INET,SOCK_STREAM,0);
if(sListen==INVALID_SOCKET)
{
printf("socket() Failed:%d\n",WSAGetLastError());
return;
}
//以下建立效劳器端地址
=AF_INET;
//htons()函数把一个双字节的主机直接顺序的数据转换为网络直接顺序的数
=htons(iPort);
//htonl()函数把一个四字节的主机直接顺序的数据转换为网络直接顺序的数
//使用系统制定的IP地址INADDR_ANY
=htonl(INADDR_ANY);
if(bind(sListen,(LPSOCKADDR)&ser,sizeof(ser))==SOCKET_ERROR)
{
printf("bind() Failed: %d\n",WSAGetLastError());
return;
}
//进入监听状态
if(listen(sListen,5)==SOCKET_ERROR)
{
printf("listen() Failed:%d\n",WSAGetLastError());
return;
}
//初始化客户端地址长度参数
iLen=sizeof(cli);
//进入一个无限循环,等待客户的连接请求
while(1)
{
sAccept=accept(sListen,(struct sockaddr*)&cli,&iLen);
if(sAccept==INVALID_SOCKET)
{
printf("accept