#include <Winsock2.h>
#include <stdio.h>
#include <string.h>
#pragma comment(lib,"ws2_32.lib")
#define PORT 4048
int main()
{
//初始化环境,判断是否成功
WSADATA wsaData;
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
printf("WSAStartup failed with error!\n");
return -1;
}
//定义服务器端地址
struct sockaddr_in seraddr;
struct sockaddr_in cliaddr;
//初始化结构体
memset(&seraddr,0,sizeof(seraddr));
memset(&cliaddr,0,sizeof(cliaddr));
//对服务器端地址赋值
seraddr.sin_family=AF_INET;
seraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
seraddr.sin_port=htons(PORT);
//定义套接字
SOCKET listenSock,newSock;
listenSock=socket(AF_INET,SOCK_STREAM,0);
//判断套接口是否建立成功
if(listenSock == INVALID_SOCKET){
printf("fail to build socket!/n");
return -1;
}
//定义传输的内容
char strSend[100];
memset(strSend,0,sizeof(strSend));
int dummy=sizeof(SOCKADDR);
//建立连接
bind(listenSock,(SOCKADDR *)&seraddr,sizeof(SOCKADDR));
//准备接受连接请求
listen(listenSock,10);
printf("connecting....\n");
newSock=accept(listenSock,(SOCKADDR *)&cliaddr,&dummy);
printf("客户端的端口号是:%d\n",cliaddr.sin_port);
printf("客户端的ip地址是:%s\n",inet_ntoa(cliaddr.sin_addr));
printf("a client enter.....\n");
char recvBuf[100];
memset(recvBuf,0,sizeof(recvBuf));
printf("please start first:\t");
gets(strSend);
while(1)
{
send(newSock,strSend,strlen(strSend)+1,0);
recv(newSock,recvBuf,100,0);
if(strcmp(recvBuf,"exit")==0)
{
printf("the client quit\n");
break;
}
else
{
printf("the client says:\t%s\n",recvBuf);
printf("it is your turn:\t");
gets(strSend);
}
}
closesocket(newSock);
closesocket(listenSock);
WSACleanup();
return 0;
}