Windows下简单的C语言服务器(UDP)

简单的UDP的C语言版也来了   TCP:http://blog.csdn.net/mastic_29/article/details/70245038

--查看本机IP:ipconfig/all


---C语言实现

---visual studio 2012

Server:

#include 
#include 

#pragma comment(lib,"ws2_32.lib")

int main(void)
{
	//初始化wsa
	WORD sockVision = MAKEWORD(2,2);
	WSADATA wsadata;
	//其他变量
	SOCKET serSocket;
	struct sockaddr_in remoteAddr;
	struct sockaddr_in sin;
	int ret = -1;
	int nAddrlen = sizeof(remoteAddr);
	char revdata[255];
	char senddata[255];

	if( WSAStartup(sockVision,&wsadata) != 0 )
	{
		printf("WSA初始化失败\n");
		return 0;
	}

	//创建套接字
	serSocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
	if(serSocket == INVALID_SOCKET)
	{
		printf("socket服务器创建失败\n");
		return 0;
	}

	//绑定IP和端口
	sin.sin_family = AF_INET;
	sin.sin_port = htons(8888);
	sin.sin_addr.S_un.S_addr = INADDR_ANY;
	if( bind(serSocket,(LPSOCKADDR)&sin,sizeof(sin)) == SOCKET_ERROR )
	{
		printf("绑定IP和端口\n");
		return 0;
	}

	//循环接收数据
	while(1)
	{
		ret = recvfrom(serSocket,revdata,255,0,(SOCKADDR*)&remoteAddr,&nAddrlen);
		if(ret > 0)
		{
			revdata[ret] = 0x00;
			printf("接收到一个连接:%s \n",inet_ntoa(remoteAddr.sin_addr));
			printf("\n");
			printf("客户:");
			printf(revdata);
			printf("\n");
		}

		if(strcmp(revdata,"bye") == 0)
			break;

		//发送数据
		printf("我:");
		scanf("%s",senddata);
		sendto(serSocket,senddata,strlen(senddata),0,(SOCKADDR*)&remoteAddr,nAddrlen);
	}

	closesocket(serSocket);
	WSACleanup();
	return 0;
}


Client:

#include 
#include 

#pragma comment(lib,"ws2_32.lib")


int main(void)
{
	WORD sockVision = MAKEWORD(2,2);
	WSADATA wsadata;
	SOCKET sclient ;
	struct sockaddr_in clientAddr;
	char senddata[255];
	char revdata[255];
	int ret = -1;
	int len = -1;
	if(WSAStartup(sockVision,&wsadata) != 0)
	{
		printf("WSA初始化失败\n");
		return 0;
	}

	sclient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	if(sclient == INVALID_SOCKET)
	{
		printf("socket客户端创建失败\n");
		return 0;
	}

	clientAddr.sin_family = AF_INET;
	clientAddr.sin_port = htons(8888);
	clientAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.224");
	len = sizeof(clientAddr);

	while(1)
	{
		printf("我:");
		scanf("%s",senddata);
		sendto(sclient,senddata,strlen(senddata),0,(SOCKADDR*)&clientAddr,len);
		if(strcmp(senddata,"bye") == 0)
			break;
		ret = recvfrom(sclient,revdata,255,0,(SOCKADDR*)&clientAddr,&len);
		if(ret > 0)
		{
			revdata[ret] = 0x00;
			printf("\n");
			printf("服务器:");
			printf(revdata);
			printf("\n");
		}
	}

	closesocket(sclient);
	WSACleanup();

	system("pause");
	return 0;
}

你可能感兴趣的:(PC,C语言)