2022-12-12 ubuntu下尝试编写socket程序运行

首先我获得了两份分别是server,client的socket代码。用的语言是c。


代码

我首先尝试用vm下debian虚拟机与ubuntu虚拟机通信,以debian11作为服务器端,ubuntu作为客户端进行通信。

在两台虚拟机上下载搭建好c环境后,开始了第一轮的编译运行。

将代码初次输入编译后发现双方运行起来都没有反应,连接没有成功。

因为考虑到对debian系统的不熟悉,我考虑到是也许是防火墙端口号没有放行的原因,我尝试在Debian下先进行防火墙的配置,谁知道这个过程中一直磕磕绊绊,尝试了很多命令跟解决办法,到最后也没有结果。

当时在解决时搜索历史记录

  debian下装了iptables配置防火墙时,输入开放端口指令都会出现unknown option或者是未找到该指令的错误,崩溃的是在这个过程中我的debian卡死了两次,真是很搞心态。

后来debian第二次卡死就放弃了用debian作为服务器端,把ubuntu完整克隆了一台,决定用ubuntu的克隆机作为服务器端继续尝试!我的vm下 debian真的太蛋疼了,输啥啥不行!


本体与克隆

因为克隆下来的机子完全与原机相同,所以搭建c环境的步骤也省下了。甚至能在克隆机上上传git

第一步先把两边的代码准备好,

克隆机文件中的代码跟程序

因为是克隆,所以我的克隆机上有客户端跟服务器端的代码。

原机上的代码与程序

第二步进行防火墙的配置,双方都放开实验需要的5005端口。

安装ubuntu的ufw
增添5005端口允许的规则

第三步开始运行双方的代码。

首先在服务器端先运行服务器端程序,让服务器开启监听模式。


服务器开始5005端口监听,没有任何输出


客户端运行,输入指定ip跟指定端口

输入后马上回显发送数据与服务器端回应的数据。

服务器端运行结果

首先显示原机的ip号,表示连接成功,最后每次接受成功后发送ok。

最后的iret是recv函数的返回值,为0表示客户端已经发送完所有数据,并关闭了链接。

总体上运行成功。

-------------------------------------------------------------------------------------------------------

主要学习资源来源:

(19条消息) socket绑定的ip为INADDR_ANY 的意义_lyz_cs的博客-CSDN博客

先让网络通信的程序跑起来_哔哩哔哩_bilibili

C语言 socket编程(一) | zfl9

TCP通信的客户端代码实现_哔哩哔哩_bilibili

还有书籍参考:linuxC函数库参考手册

对以上作者表示感谢。

你可能感兴趣的:(2022-12-12 ubuntu下尝试编写socket程序运行)