windows socket 服务器与客户端开发实例

服务器端代码如下:

#include <stdio.h>
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
	int rs;
	WSADATA wsaData;
	WORD sock_version=MAKEWORD(2,2);
	rs=WSAStartup(sock_version,&wsaData);
	if (NO_ERROR!=rs)
	{
		printf("Error at WSAStartUp():%ld",WSAGetLastError());
		return -1;
	}
	SOCKET s;
	s=socket(AF_INET,SOCK_STREAM,0);
	if (INVALID_SOCKET==s)
	{
		printf("Error at socket():%ld",WSAGetLastError());
		WSACleanup();
		return -1;
	}
	struct sockaddr_in localAddr;
	memset(&localAddr,0,sizeof(localAddr));
	localAddr.sin_family=AF_INET;
	localAddr.sin_addr.s_addr=htonl(INADDR_ANY);
	localAddr.sin_port=htons(5050);
	rs=bind(s,(struct sockaddr*)&localAddr,sizeof(localAddr));
	if (SOCKET_ERROR==rs)
	{
		printf("Error at bind():%ld",WSAGetLastError());
		WSACleanup();
		return -1;
	}
	rs=listen(s,10);
	if (SOCKET_ERROR==rs)
	{
		printf("Error at listen():%ld",WSAGetLastError());
		WSACleanup();
		return -1;
	}
	while (1)
	{
		SOCKET conn;
		char buffer[1024];
		int n;
		conn=accept(s,NULL,NULL);
		if (INVALID_SOCKET!=conn)
		{
			n=recv(conn,buffer,1024,0);
			printf("%s\n",buffer);
			closesocket(conn);
		}
	}
	WSACleanup();
	return 0;
}
客户端代码如下:

#include <stdio.h>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
int main()
{
	WSADATA wsaData;
	WORD winsock_version=MAKEWORD(2,2);
	WSAStartup(winsock_version,&wsaData);			//加载winsock2
	SOCKET sockfd;
	struct sockaddr_in remoteAddr;
	sockfd=socket(AF_INET,SOCK_STREAM,0);		//create TCP socket
	if (sockfd==INVALID_SOCKET)
	{
		printf("Error at socket():%ld",WSAGetLastError());
		WSACleanup();
		printf("client create socket failure\n");
		return -1;
	}
	memset(&remoteAddr,0,sizeof(remoteAddr));
	remoteAddr.sin_family=AF_INET;
	remoteAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
	remoteAddr.sin_port=htons(5050);
	int rs;
	rs=connect(sockfd,(struct sockaddr*)&remoteAddr,sizeof(remoteAddr));
	if (SOCKET_ERROR==rs)
	{
		printf("Error at connect():%ld",WSAGetLastError());
		WSACleanup();
		printf("client Failed to connect\n");
		return -1;
	}
	char buffer[]="this is first e-mail:hello world!!!";
	send(sockfd,buffer,sizeof(buffer),0);
	WSACleanup();
	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值