040查看while源代码

这篇博客介绍了TCP套接字编程的基础,包括socket、bind、listen、accept和connect等关键函数的使用。通过示例展示了如何创建一个简单的TCP服务器,并逐步升级到多线程模式,以支持多个客户端连接。最后提供了服务端和客户端的源代码,供读者理解和实践。
摘要由CSDN通过智能技术生成

TCP(传输控制协议)

TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

嵌套字

套接字是通信的基石,是支持TCP/IP协议的路通信的基本操作单元。可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序),各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。

相关函数

1.socket

函数原型

int socket(int domain, int type,int protocol)

参数

domain 网络程序所在的主机采用的通讯协议族

type 网络程序所采用的通讯协议

2.bind

函数原型

int bind(int sockfd, struct sockaddr *my_addr, int addrlen)

参数

sockfd 由socket调用返回的文件描述符

addrlen sockaddr结构的长度

my_addr 一个指向sockaddr的指针. 在中有 sockaddr的定义

不过由于系统的兼容性,我们一般不用这个头文件,而使用另外一个结构(struct sockaddr_in) 来代替.在中有sockaddr_in的定义

sockaddr_in{
                unsigned short          sin_family;    
                unsigned short int      sin_port;
                struct in_addr          sin_addr;
                unsigned char           sin_zero[8];
        }

3.listen

函数原型

int listen(int sockfd,int backlog) 

参数

sockfd 由scoket调用返回的文件描述符

addr/addrlen 设置请求排队的最大长度,当有多个客户端程序和服务端相连时,使用这个表示可以介绍的排队长度

4.accept

函数原型

int accept(int sockfd, struct sockaddr *addr,int *addrlen) 

参数

sockfd socket返回的文件描述符

addr/addrlen 是用来给客户端的程序填写的,服务器端只要传递指针就可以了

5.connect

函数原型

int connect(int sockfd, struct sockaddr * serv_addr,int addrlen) 

参数

sockfd socket返回的文件描述符

serv_addr 储存了服务器端的连接信息.其中sin_add是服务端的地址

addrlen serv_addr的长度

编译并在ubuntu下运行

编译

gcc -o server-while-tcp.out server-while-tcp.c

gcc -o client.out client.c 

运行

./server-while-tcp.out //服务端输入

./client.out 服务器地址 //客户端输入 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBtMF82NTUwNTM1OQ,size_12,color_FFFFFF,t_70,g_se,x_16

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值