本文做简单理解之用,专业内容需要专业书籍获取。
socket编程主要实现网络通信之用,我们在上网的时候,向别人发送一个消息,主要经历三个过程:
1.你好,我想认识你,美女/帅哥(打招呼)
2.可以(获得同意)
3.你的联系方式是(发送的内容)
python在进行socket编程的时候,也是这么一个过程,本例也正好利用常见的发消息举个例子。这里主要用到的一个类库是,socket。以服务端为例
serve.py
import socket
sk=socket.socket()
address=('127.0.0.1',8000)
sk.bind(address)
sk.listen()
while True:
print('等待客户端链接' + '.' * 20)
connect, client = sk.accept()
print(str(client)+'上线')
while True:
try:
inp = input('>>>请输入:')
connect.send(bytes(inp, 'utf8'))
data = connect.recv(1024)
if not data:break
print(str(data, 'utf8'))
except ConnectionResetError:
print('-'*10+'对方离线'+'-'*10)
break
sk.close()
1.创建一个socket对象
sk=socket.socket()
2.绑定IP地址和端口address=('127.0.0.1',8000)
3.监听这个端口sk.bind(address)
4.等待客户端链接connect, client = sk.accept()
5.发送内容或者接收内容connect.send(bytes(inp, 'utf8'))
1,2,3步都是为打招呼做准备,4步等待客户端介入,并且获取同意,5步发送内容
在客户端,只需要请求链接服务端,而服务端会监听到端口会同意。
client.py
import socket
sk=socket.socket()
try:
sk.connect(('127.0.0.1',8000))
except ConnectionRefusedError:
print('-'*10+'服务器未上线,或者不存在'+'-'*10)
exit()
while True:
try:
data = sk.recv(1024)
except ConnectionResetError:
print('-'*10+'服务器歇菜了'+'-'*10)
break
print(str(data, 'utf8'))
inp = input('>>>请输入:')
if inp =='exit':
break
sk.send(bytes(inp, 'utf8'))
sk.close()
sk.connect(('127.0.0.1',8000))
为链接服务段的请求。
代码演示如下:
3.发送内容,客户端就收到了,此时客户端也可以回复服务端的响应