基于TCP协议的简单通信实现

这里分享一个Winsock版本的简单入门通信程序,包含客户端和服务端

服务端:

#include <winsock2.h>
#include <stdio.h>
#pragma comment (lib,"ws2_32");
int main()
{
	WSADATA wsaData;

	WSAStartup(MAKEWORD(2,2),&wsaData);
	SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
	sockaddr_in sockaddr;
	sockaddr.sin_family=PF_INET;
	sockaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
	sockaddr.sin_port=htons(827);

	bind(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR));
	listen(s,1);

	SOCKADDR ClientAddr;
	int nSize=sizeof(SOCKADDR);
	SOCKET clientSock;
	clientSock=accept(s,(SOCKADDR*)&ClientAddr,&nSize);
	char szRBuffer[MAXBYTE]={0};
	char szSBuffer[MAXBYTE]={0};
	while(1)
	{
		recv(clientSock,szRBuffer,MAXBYTE,NULL);
		if(strcmp(szRBuffer,"quit")==0)
			break;
		printf("recieve : %s\n",szRBuffer);
		printf("send : ");
		scanf("%s",szSBuffer);
		send(clientSock,szSBuffer,MAXBYTE,NULL);
	}
	closesocket(clientSock);
	closesocket(s);

	WSACleanup();
	return 0;
}


客户端:

#include <stdio.h>
#include <winsock2.h>
#pragma comment (lib,"ws2_32")
int main()
{
	WSADATA wsaData;
	WSAStartup(MAKEWORD(2,2),&wsaData);
	SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);

	sockaddr_in sockaddr;
	sockaddr.sin_family=PF_INET;
	sockaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
	sockaddr.sin_port=htons(827);

	connect(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR));

	char szRBuffer[MAXBYTE]={0};
	char szSBuffer[MAXBYTE]={0};
	while(1)
	{
		printf("send:");
		scanf("%s",szSBuffer);
		send(s,szSBuffer,MAXBYTE,NULL);
		if(strcmp(szSBuffer,"quit")==0)
			break;
		recv(s,szRBuffer,MAXBYTE,NULL);
		printf("recieve=%s\r\n",szRBuffer);
	}
	closesocket(s);
	WSACleanup();
	return 0;
}


运行结果



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值