Socket 就是对 协议的底层封装,使用户可以简单的进行使用。
Socket 里面就干两件事,send / receive
socket Types
socket.SOCK_STREAM # for TCP
socket.SOCK_DGRM# for UDP
socket.SOCK_RAW #原始套接字,普通的布达拉字无法处理ICMP、IGMP等网络报文,而SOCK_RAM可以,另外,SOCK_RAW 也可以处理特殊的报文v4
socket.SOCK_RDW# 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。
socket.SOCK_SEQPACKET #废弃了
先有服务端,也就是接收端
python 中,需要先导入 socket:import socket
然后再定义socket 的协议类型:socket.TCP/IP
接收端是监听动作的:listen( IP地址,端口号)
等待客户端的数据 :waiting()
接收数据 :recv()
最后是响应数据请求:send()
```python
接收端
import socket
socket.TCP/IP
listen(0.0.0.0,端口)
waiting()
recv()
send
```
服务器端 server.py文件
客户端,也必须先导入socket: import socket
也需要确认socket的类型,这里当然是跟服务端一样的TCP/IP类型:socket.TCP/IP
确认访问的服务端ip地址和对应程序的端口:connect(ip地址,端口号)
然后开始发送数据:socket.send(内容)
数据发送结束后,当然就是关闭socket : socket.close
```python
发送端
import socket
socket.TCP/IP
connect(a.ip,a.port)
socket.send(count)
socket.recv()
socket.close()
```
伪代码写完就来实现它吧!新建一个 server.py 文件,从字面上来看这就是一个服务端的文件
```python
import socket
server = socket.socket() # 确定socket的协议
#如果IP地址为空表示可以接收任何电脑发送过来的数据
server.bind((localhost,60000)) # bind中只接收一个参数,元组中第一个元素是地址,第二个元素是端口号
server.listen()
conn,addr = server.accept() # server.accept 返回两个值,一个做为标识,一个是地址,conn和 addr分别接收
#conn就是客户端连接过来在服务器端生成的一个实例
data = conn.recv(1024) # 接收的最大数据,单位是字节
conn.send(data)
print(data)
server.close()
```
客户端 client.py文件
接下来就是客户端,新建一个client.py文件
```python
import socket
client = socket.socket()
client.connect((localhost,60000))
client.send(bHello World !)
data = client.recv(1024)
client.close()
```
一个接收一个发送,这就实现了一个socket网络通信的过程。当然这只是一个最简单的例子,程序还可以继续扩展,例如使用一个循环重复去调用 socket 的发送信息与接收。
那么如果把接收端和发送端结合,就可以实现聊天工具的功能了