linux下TCP socket

本文介绍了一个简单的TCP回显服务器与客户端的实现过程。服务器接收来自客户端的消息,并将其原样返回。客户端则负责向服务器发送消息并接收服务器回传的信息。此示例使用C语言编写,涉及socket编程的基本应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端向服务端发送信息,服务端将客户端发送的信息回送给客户端。

server.c

//server.c
#include<stdio.h>
#include<memory.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
int main(void)
{	
    int listenfd,connfd;
	struct sockaddr_in ser_addr;
	struct sockaddr_in cli_addr;
	char buf[80];
	int len;
        int cli_len=sizeof(cli_addr);
	memset(&ser_addr,0,sizeof(ser_addr));
	ser_addr.sin_family=AF_INET;
	ser_addr.sin_addr.s_addr=(INADDR_ANY);
	ser_addr.sin_port=htons(10001);
	
	if((listenfd=socket(AF_INET,SOCK_STREAM,0))<0)
	{
	   printf("socket() error!\n");
	   exit(0);
	}
	if(bind(listenfd,(struct sockaddr *)&ser_addr,sizeof(ser_addr))<0)
	{
	   printf("bind() error!\n");
	   exit(0);
	}
	if(listen(listenfd,20))
	{
	   printf("listen() error!\n");
	   exit(0);
	}
	//connfd=accept(listenfd,(struct sockaddr *)&cli_addr,&(sizeof(struct sockaddr)));
	connfd=accept(listenfd,(struct sockaddr *)&cli_addr,&cli_len);
	while(1)
	{
	   if((len=recv(connfd,buf,80,0))>0)
	   {
	      buf[len]='\0';
	   }
           printf("client:%s\n",buf);
	   send(connfd,buf,sizeof(buf),0);
        //   printf("server:%s\n",buf);
	}
        close(connfd);
	close(listenfd);
}
client.c

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
int main(void)
{
   int serverfd;
   struct sockaddr_in ser_addr;
   ser_addr.sin_family=AF_INET;
   ser_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
   ser_addr.sin_port=htons(10001);
   char str[80];
   int len;
   serverfd=socket(AF_INET,SOCK_STREAM,0);
   connect(serverfd,(struct sockaddr *)&ser_addr,sizeof(ser_addr));
   while(1)
   {
      printf("Client:");
	  scanf("%s",str);
	  send(serverfd,str,sizeof(str),0);
	  len=recv(serverfd,str,80,0);
	  str[len]='\0';
	  printf("Server:%s\n",str);
   }
   close(serverfd);
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值