Socket通信中的多进程编程

Socket通信中的多进程编程服务器端接收到客户端发送的数据 将用户输入的内容在服务器上打印出来 并原样返回 fork 在英语中意思是分叉的意思

欢迎大家来到IT世界,在知识的湖畔探索吧!

1 需求描述:

(1)Linux下编写。

(2)创建一个服务器、若干个客户端。

(3)用户可以通过客户端输入文字向服务器发送消息。

(4)服务器端接收到客户端发送的数据,将用户输入的内容在服务器上打印出来,并原样返回。

2 相关基础

2.1 套接字Socket通信编程

2.1.1 TCP/IP通信过程:

Socket通信中的多进程编程

图2.1.1 TCP/IP通信过程

2.1.2 UDP通信过程:

Socket通信中的多进程编程

图2.1.2 UDP通信过程

2.2 fork多进程编程

fork,在英语中意思是分叉的意思。Linux函数fork(void)被定义在#include

中,调用成功时,返回两个值,子进程返回0,父进程返回子进程的ID,出错返回-1。子进程是父进程的副本,它将获得父进程的数据空间、堆、栈等资源的副本并且拥有自己独立的地址空间。

以下是一个fork的简单例子。

Socket通信中的多进程编程

fork实例

3 设计

3.1 框架设计

Socket通信中的多进程编程

图3.1 框架设计

本文使用TCP进行通信。

3.2 代码设计

套接口的通信一般使用read( )和write( )。这里使用send( )和recv( ),因为这一对函数可以更好地控制数据传输。

Socket通信中的多进程编程

图3.2 代码设计

4 详细代码

4.1 服务器端代码

Socket通信中的多进程编程

服务器端代码

4.2 客户端代码

Socket通信中的多进程编程

客户端代码

5 运行结果

  Linux下进行编译:

    gcc Server.c -o server

    gcc Client.c -o client

运行结果

客户端1:

Socket通信中的多进程编程

图5.1 客户端1运行结果

客户端2:

Socket通信中的多进程编程

图5.2 客户端2运行结果

服务器端:

Socket通信中的多进程编程

图5.3 服务器端运行结果

从上图中可以看到,服务器可以对两个客户端的消息进行相应。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/82878.html

(0)
上一篇 1小时前
下一篇 2025年 5月 8日 上午7:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信