socket确实比较乱,所以整理流程。
服务端:
1、import socket 引入模块
2、创建socket对象。server = socket.socket()
3、声明服务端的ip地址和端口号。ip_prot = ('192.168.12.97',8096) # 本机作为服务器的话,ip地址就是本机地址,端口号必须在8000以后。
4、绑定socket对象和声明的ip地址及端口号。server.bind(ip_prot) #这应该是固定写法?
5、开始通过socket对象的listen方法监听ip地址和端口。server.listen(参数) #这里这个参数据说不用给,参数的意思是可以有多少等待的,而不是有多少可以同时接通的。
6、等着别人联通过来。conn,addr = server.accept() # 这的conn就是拿到的客户端和服务器之间的连接通道。这个通道很重要。下面很多操作是通过这个进行的。
7、接收收到的信息。from_client_msg = conn.recv(1024) # 这里的1024必须给出一个数字,因为收到的是字节码,所以单位是B。1024B = 1KB,1024KB = 1MB。注意这里是使用conn这个连接通道来接收的信息。
8、进行解码。from_client_msg = from_client_msg.decode('utf-8') # 因为收到的是字节码,所以必须解码。
9、打印输出收到的信息。print(from_client_msg)
10、给对方回信。msg = input('这里是你想说的话:') # 输入你的信息给对方回信
11、通过conn的send方法给对方发信息。conn.send(msg.encode('utf-8')) # 因为i发送的是字节码,所以必须进行编码。
12、关闭连接通道。conn.close() # 这只是关闭连接通道
13、关闭socket对象。server.close()
以上7至11步可以在一个while循环内,这样就能接一句发一句的进行对话了。
客户端:
前两步同服务端,引入socket模块,实例化socket对象。
import socket
client = socket.socket()
3、注明服务器的ip地址和端口号。server_ip_port = ('192.168.12.97'),8096 # 注意ip地址和端口号一定要和服务端的一样。
4、连接到服务端。client.connect(server_ip_port) # 这里是通过socket对象client的connect方法,连通到声明好的服务端。
while循环开始
5、通过client的send方法发消息。client.send(input('你想对服务端说的话:').encode('utf-8') # 发消息用send方法,因为发送的是字节码,所以必须进行编码。
6、接收服务端传回的消息。from_server_msg = client.recv(1024).decode('utf-8') # recv就i是收信息,而且必须声明一个参数。收到的字节码必须进行解码。
7、打印输出收到的信息。print(from_server_msg)
循环结束
8、关闭socket对象,通话结束。 client.close()