python3网络编程socket最简单的例子实现聊天工具的功能

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 的发送信息与接收。

那么如果把接收端和发送端结合,就可以实现聊天工具的功能了