Linux网络编程

电子说

1.2w人已加入

描述

一、介绍

比如2个安卓手机需要通讯,就必须获得对方的IP地址和端口号

LinuxLinux

socket套接字:分为TCP和UDP

TCP:面向连接,可靠,(类似于双方打电话),适用于数据量小而且需要准确传输

UDP:面向报文,不可靠,(类似于双方发短信),适用于数据量大且不需要准确传输

LinuxLinux

进程间通信是基于Linux内核的,不适用于两台手机之间的通信。

 

字节序:

小端:将低序字节存储在起始地址

大端:将高序字节存储在起始地址

LinuxLinux

电脑是小端字节序,网络字节序是大端字节序。

二、socket服务器与客户端

客户端获取服务器的端口号和IP地址:

LinuxLinux

 

 

 

socket的具体工作流程:

Linux

 

Linux

 

Linux

 

LinuxLinuxLinuxLinux

 

 

 

 

 

 

LinuxLinux

 

Linux

atoi()函数

atoi():int atoi(const char *str );

功能:把字符串转换成整型数。

 

Linux

实现例程:

一、linux下客户端连接服务器,成功后,主机(客户端)telnet远程登录虚拟机(服务器):

①:

Linux

创建套接字,确定好连接协议(IPV4),type种类选择为流式套接字,基于TCP协议。

 

②:

Linux

确定好服务器的IP地址以及端口号

其中htons是将端口号转换成网络能识别的格式;inet_aton是将IP地址转化成网络识别的IP地址。

 

③:

Linux

监听是否有客户端连接。

 

④:

Linux

允许客户端的接入。

 

最后while(1);等待客户端的接入。

 

二、获取客户端的IP地址:

Linux

在上一个工程代码的结构上,增加accept具体监听对象,以及读取IP地址。

三、客户端与服务器数据传输的实现:

 

客户端先写入再读取:

Linux

服务器端先读取再写入:

Linux

最后运行服务器与客户端的代码会得到:

Linux

 

 

四、端口经常被占用,做成main函数传参配置文件

 

Linux

在上述例子中编写传参参数:      

  c_addr.sin_port=htons(atoi(argv[2]));
       inet_aton(argv[1],&c_addr.sin_addr);
其中atoi(argv[2])是将字符串转换为整型数据。

 

运行结果:

Linux上:客户端  下:服务器

 

五、

在上述客户端与服务器之间的聊天


审核编辑 黄宇

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分