Linux实现基于TCP Socket多线程文件传输

这篇博客介绍了如何在Linux环境下使用TCP Socket实现多线程文件传输。作者通过详细注释的代码展示了服务器端和客户端的实现过程,帮助读者理解相关原理。
摘要由CSDN通过智能技术生成

学习了网上转载很多次的实现TCP文件传输和多线程的代码

原理不再赘述,学习过程做了不少注释

代码如下

server端:

#include<stdlib.h>
#include<pthread.h>
#include<netinet/in.h> 
#include<sys/types.h>   
#include<sys/socket.h>  
#include<stdio.h>    
#include<stdlib.h>  
#include<string.h>     
#include<arpa/inet.h>

#define SERVER_PORT 8000   
#define LENGTH_OF_LISTEN_QUEUE 20   
#define BUFFER_SIZE 1024   
#define FILE_NAME_MAX_SIZE 512   
static void Data_handle(void * sock_fd);
int main(void)   
{   


  // 声明并初始化一个服务器端的socket地址结构,sockaddr_in是internet环境下套接字的地址形式
  //sockaddr_in(在netinet / in.h中定义):
  //	struct  sockaddr_in {
  //	short  int  sin_family;                      /* Address family */
  //	unsigned  short  int  sin_port;       /* Port number */
  //	struct  in_addr  sin_addr;              /* Internet address */
  //	unsigned  char  sin_zero[8];         /* Same size as struct sockaddr */
  //};
  //struct  in_addr {unsigned  long  s_addr;};
  struct sockaddr_in server_addr;   
  bzero(&server_addr, sizeof(server_addr)); 
  //Sa_family: 是地址家族,也成作,协议族,一般都是"AF_XXX"的形式,常用的有
  //AF_INET  Arpa(TCP / IP) 网络通信协议
  //AF_UNIX  UNIX 域协议(文件系统套接字)
  //AF_ISO    ISO标准协议
  //AF_NS    施乐网络体统协议
  //AF_IPX  Novell IPX 协议
  //AF_APPLETALK   Appletalk DDS
  server_addr.sin_family = AF_INET;   

  //htons是将整型变量从主机字节顺序转变成网络字节顺序, 就是整数在地址空间存储方式变为高位字节存放在内存的低地址处。
  //INADDR_ANY:0.0.0.0,泛指本机的意思,也就是表示本机的所有IP,监听本机所有网卡
  server_addr.sin_addr.s_addr = htons(INADDR_ANY);   
  server_addr.sin_port = htons(SERVER_PORT);   
  

  // 创建socket,若成功,返回socket描述符   
  //1、domain:即协议域,又称为协议族(family)。AF_INET:TCP/IP协议簇
  //2、type:指定socket类型。SOCK_STREAM(常用)字节流套接字
  //3、protocol:故名思意,就
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值