socket起源于linux,Socket 简介及面试题

Socket 简介

1.什么是Socket?

Socket是对TCP/IP 协议的抽象,是操作系统对外开放的接口。socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭).

eee86da5c6756c3b54ba0cdcc004da1f.png

2.Socket通信流程

3e0b2d11f02cf73062490c0a3fb51d0b.png

先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

3.Socket相关的面试题

编写一个网络应用程序,有客户端和服务器端,客户端向服务器发送一个字符串,服务器收到该字符串后将其打印到命令行上,然后向客户端返回该字符串的长度,最后客户端输出服务器端返回的该字符串的长度,分别用TCP和UDP两种方式去实现

3.1 TCP实现

TCPServer

1cc504b4044da3725f52a791b20d061f.pngLengthCalculator

ada12c76d00b45d463e795fe4725ecc0.png

022d93b5dea82614cc0ccd8ef1957dc7.png

TCPClient

7a4c6b682a2f61b007a15f9fc1e7cb23.png

3.2 UDP实现

UDPServer

60d739ec6ffeaab3769e21935575914f.png

UDPClient

0900087fc95a085c7e4dcd2f2472366c.png


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部