1.什么是socket
-
sockert 又叫套接字,指的是网络通信的两端,分别是服务器和客户端。
-
socket 编程指的是通过代码实现客户端和服务器之间的通信
2.服务器的实现
①创建套接字对象
-
family : ip类型, AF_INET -> ipv4,AF_INET6 -> ipv6
-
type: 传输协议类型,SOCK_STREAM ->TCP, SOCK_DGRAM ->UDP
server = socket.socket()
②绑定IP地址和端口
-
ip:用来区分互联网上设备
-
端口:用来区分一台计算机上不同的服务(应用),值是0-65535,其中0-1024是著名端口。其他的随便选。
sever.bind((ip地址,端口号))
③启动服务器(监听请求)
server.listen(数量)
④让服务器一直处于运行状态
while True:
pass
⑤等待客户端的请求
- 程序运行到这儿 ,会停下来等到有客户端来连接服务器,才会接着往后执行。
server.accept()
⑥发送消息
send(数据)
⑦接收消息
- 接受数据,并制定能够接受的最大数据
- 返回接收到的二进制数据
-
recv也会阻塞线程,程序运行到这个地方会停下来,等客户端发送消息,才会往后执行。
recv(字节数)
⑧关闭连接
connect.close()
服务器全部代码:
import socket
server = socket.socket()
server.bind(('10.7.190.69', 8080))
server.listen(255)
while True:
print('开始监听....')
connect, addr = server.accept()
print(connect, addr)
message = input('>>>')
connect.send(message.encode(encoding='utf-8'))
data = connect.recv(1024)
print(data.decode(encoding='utf-8'))
connect.close()
3.客户端的实现
①创建套接字对象
-
family : ip类型, AF_INET -> ipv4,AF_INET6 -> ipv6
-
type: 传输协议类型,SOCK_STREAM ->TCP, SOCK_DGRAM ->UDP
client = socket.socket()
②连接服务器
client.connect((ip地址, 端口))
③接收消息
data = client.recv(1024)
④发送消息
client.send(message.encode(encoding='utf-8'))
客户端全部代码:
import socket
client = socket.socket()
client.connect(('10.7.190.127', 8081))
data = client.recv(1024)
print(data.decode(encoding='utf-8'))
message = input('>>>')
client.send(message.encode(encoding='utf-8'))