【网络编程入门】使用socket在Linux下实现即时通信软件

使用socket在Linux下实现即时通信软件

在前一篇文章中讲到了如何使用winsock:【网络编程入门】在C++中使用Windows TCP Sockets,也算是勉强入门了吧,接下来自己写一下在Linux下的网络编程,也算是把知识理一遍。代码架构参考了实验楼的C++ 实现即时通信软件

介绍

进程、端口、Socket、IP地址

首先我们知道两个进程要通信,必须要求进程有唯一标识,本地进程的通信使用PID作为标识,在Linux下使用ps -A即可查看所有进程的PID,但是在网络通信中PID无法保证唯一,所以前人采用了 IP地址+协议+端口号 来标识网络中的一个进程,那么socket就是用于连接这一标识的具体对象。详见简单理解Socket维基百科

当然,一台计算机可以建立多个连接,所以有了端口(port),可以使用netstat -pan | grep 端口号命令查看占用某端口的进程

一些常见服务使用的端口如下:

端口 服务
7 Ping
13 Time
15 Netstat
22 SSH
23 Telnet
25 SMTP(发邮件)
80 HTTP(网页)
110 POP(收邮件)

IP地址是分配给网络中每台计算机的身份标识,在Linux下可以使用ifconfig来查看。
因为网站使用数字标识不利于人的记忆,所以大佬们提出了“域名”这一解决方案,使用www.baidu.com这样的简易的名称代替IP地址。当我们在浏览器输入这些域名时,将通过路由器查找该域名的IP地址,一旦成功获取(或主机解析完成),浏览器就会连接服务器所在的地址。关于域名解析就不详细说了。
这里写图片描述

字节顺序

通常,计算机(CPU相关)和网络协议采用的是不同的字节顺序,计算机采用的是小端(Little-Endian)而网络协议采用大端(Big-Endian)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值