TCP通信程序

#发端
#include "head.h"
	
int main(void)
{	
	int sockfd = 0;
	ssize_t nsize =0;
	struct sockaddr_in recvaddr;
	char tmpbuff[1024];
	int ret = 0;
	int fd = 0; int nret = 0;
	
	sockfd = socket(AF_INET,SOCK_STREAM,0);  /* 流式套接字 */
	if(-1==sockfd)
	{
		perror("fail to socket");
		return -1;
	}
	recvaddr.sin_family =AF_INET;
	recvaddr.sin_port = htons(50000);
	recvaddr.sin_addr.s_addr = inet_addr("192.168.1.156");
	
	ret = connect(sockfd,(struct sockaddr *)&recvaddr,sizeof(recvaddr));
	if(-1==ret)
	{
		perror("fail to connect");
		return -1;
	}

	printf("请输入发送文件名");
	gets(tmpbuff);
	nsize = send(sockfd,tmpbuff,strlen(tmpbuff),0);
	if(-1==nsize)
	{
		perror("fail to send");
		return -1;
	}
	sleep(1);
	fd = open(tmpbuff,O_RDONLY);
	while(1)
	{
		memset(tmpbuff,0,sizeof(tmpbuff));
		nret = read(fd,tmpbuff,sizeof(tmpbuff));
		if(nret<=0)
		{
			break;
		}
		nsize = send(sockfd,tmpbuff,nret,0);
	}
	
	close(fd);	
	close(sockfd);
	return 0;
}	
//接收端
#include "head.h"
	
int main(void)
{	
	int sockfd = 0;//socket->bind->listen->accept->recv->close
	ssize_t nsize =0;
	struct sockaddr_in recvaddr;
	char tmpbuff[1024];
	int ret = 0; int confd = 0;
	int fd = 0; 
	
	sockfd = socket(AF_INET,SOCK_STREAM,0);  /* 流式套接字 */
	if(-1==sockfd)
	{
		perror("fail to socket");
		return -1;
	}
	recvaddr.sin_family =AF_INET;
	recvaddr.sin_port = htons(50000);
	recvaddr.sin_addr.s_addr = inet_addr("192.168.1.156");/*INADDR_ANY*/
	ret = bind(sockfd,(struct sockaddr *)&recvaddr,sizeof(recvaddr));

	ret =  listen(sockfd,10);

	confd = accept(sockfd,NULL,NULL);
	
	nsize = recv(confd,tmpbuff,sizeof(tmpbuff),0);

	fd = open(tmpbuff,O_WRONLY|O_CREAT|O_TRUNC,0664);
	while(1)
	{
		nsize = recv(confd,tmpbuff,sizeof(tmpbuff),0);
		if(nsize == 0)
		{
			break;
		}
		write(fd,tmpbuff,nsize);
	}

	close(fd);close(confd);
	
	close(sockfd);
	return 0;
}

    上述代码为 TCP全双工通信

TCP发端:
    socket 
    connect 
    send
    recv 
    close 

TCP收端:
    socket 
    bind 
    listen 
    accept //有阻塞功能
    send 
    recv 
    close 
 

相关推荐

  1. TCP通信程序

    2024-03-13 12:42:03       49 阅读
  2. <span style='color:red;'>TCP</span><span style='color:red;'>通信</span>

    TCP通信

    2024-03-13 12:42:03      30 阅读
  3. 使用Boost.Asio编写TCP通信程序框架(一)

    2024-03-13 12:42:03       41 阅读
  4. C# TCP通信机制

    2024-03-13 12:42:03       46 阅读
  5. QT TCP通信介绍

    2024-03-13 12:42:03       33 阅读
  6. tcp通信协议

    2024-03-13 12:42:03       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 12:42:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 12:42:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 12:42:03       82 阅读
  4. Python语言-面向对象

    2024-03-13 12:42:03       91 阅读

热门阅读

  1. 分布式微服务 - 2.服务注册 - 5.Nacos

    2024-03-13 12:42:03       41 阅读
  2. 使用fegin遇到的俩个问题

    2024-03-13 12:42:03       37 阅读
  3. springboot集成Quartz定时任务组件

    2024-03-13 12:42:03       44 阅读
  4. vsto给excel赋值最快的方式是什么

    2024-03-13 12:42:03       41 阅读
  5. 什么是R语言?什么是R包?-R语言001

    2024-03-13 12:42:03       30 阅读
  6. 新概念英语第二册(81)

    2024-03-13 12:42:03       38 阅读
  7. 北京某中厂凉经

    2024-03-13 12:42:03       35 阅读
  8. yolov5训练数据,并运行在rv1126平台

    2024-03-13 12:42:03       40 阅读
  9. 工业制造企业能耗是怎么一回事

    2024-03-13 12:42:03       37 阅读
  10. 软件架构设计的核心步骤详解

    2024-03-13 12:42:03       41 阅读
  11. 为何读了这么多书,依然不知道怎么过好一生?

    2024-03-13 12:42:03       44 阅读
  12. 基础的正则表达式

    2024-03-13 12:42:03       42 阅读