Linux网络编程 | TCP客户端与服务器编程流程

前言

TCP协议下服务器与客户端编程流程。


一、TCP是什么?

TCP是一种可靠的,面向连接的流式服务。

二、TCP编程流程

Linux网络编程 | TCP客户端与服务器编程流程_第1张图片

三、具体步骤

服务器端代码如下(示例):

```ser.c``

#include
#include
#include
#include
#include
#include
#include

int main()
{
	int sockfd=socket(AF_INET,SOCK_STREAM,0);//创建套接字
	assert(sockfd!=-1);
	
	struct sockaddr_in saddr,caddr;
	memset(&saddr,0,sizeof(saddr));
	saddr.sin_family=AF_INET//设置IPV4协议族
	saddr.sin_port=htons(6000);//设置端口号,需特别注意,1024以内的端口是著名端口,比如80是Web服务器端口,不能随便使用
	
	saddr.sin_addr.s_addr=inet_addr="127.0.0.1";
	
	int res=bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));//绑定
	assert(res!=-1);
	
	listen(sockfd,5);//创建监听队列
	while(1)
	{
		int len=sizeof(caddr);
		int c=accept(sockfd,(struct sockaddr*)&caddr,&len);//接收连接
		if(c<0)//说明对方关闭
		{
			continue;
		}
		printf("c=%d\n",c);
		char buff[128]={0};
		int n=recv(c,buff,127,0);//接受数据
		send(c,"ok",2,0);//发送数据
		close(c);//关闭连接
	}
}

```cli.c``

#include
#include
#include
#include
#include
#include
#include
int main()
{
	sockfd=sockrt(AF_INET,SOCK_STREAM,0);
	assert(sockfd!=-1);
	
	struct sockaddr_in saddr;//指定服务器的IP和端口
	memset(&saddr,0,sizeof(saddr));
	addr.sin_family=AF_INET//设置IPV4协议族
	saddr.sin_port=htons(6000);//设置端口号
	saddr.sin_addr.s_addr=inet_addr="127.0.0.1";

	int res=connect(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));//连接客户端
	assert(res!=-1);
	char buff[128]={0};
	printf("input\n");
	fgets(buff,127,stdin);//获取键盘输入数据
	send(sockfd,buff,strlen(buff),0);//发送
	memset(&buff,0,128);
	recv(sockfd,buff,127,0);//接受客户端消息
	printf("recv:%s\n",buff);
	close(sockfd);//关闭连接
}

总结

这里只做了服务器与客户端进行一次交互的代码

你可能感兴趣的:(Linux,linux,网络,服务器)