Czs--从此蜕变

搭建简单TCP连接

TCP服务端

from socket import *
1.创建套接字
socket(socket_family=AF_INET,
socket_type=SOCK_STREAM,
proto=0)

功能:创建套接字
参数:socket_family: 选择地址簇种类 AF_INET
socket_type: 套接字类型SOCK_STREAM 流式套接字
SOCK_DGRAM 数据报套接字
 proto: 子协议类型默认为0
返回值:返回创建的套接字
2.绑定IP和端口号

sockfd.bind()
功能: 绑定IP和端口
参数: 是一个元组,第一项是字符串形式的IP
第二项是端口号
(’192,168,1,1’,8888)

3.让套接字具有监听功能
sockfd.listen(n)
功能:使套接字变为监听套接字,同时创建监听队列
参数:n监听队列大小

4.等待客户端连接
sockfd.accept()
功能:阻塞等待客户端连接
返回值:第一个:返回一个新的套接字用来和客户端同信
  第二个:返回连接的客户端的地址

5.消息的收发
recv(buffer)
功能:接受消息
参数:一次接受消息的大小 字节
返回值:返回接收到的内容

send(data)
功能:发送消息
参数:发送的内容(发送byte格式的字节)
返回值:发送了多少个字节
当没有接收端的时候send操作会导致 broken pipe
6.关闭套接字
close()
功能:关闭套接字

TCP客户端

1.创建流式套接字
2.发起连接请求
connect()
功能:发起连接
参数:一个元组 第一个元素: 服务器的IP
第二个元素: 服务器的port

3.收发消息
4.关闭套接字

tcp_client.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from socket import *

#创建套接字
sockfd=socket(AF_INET,SOCK_STREAM)

#发起连接
sockfd.connect(('127.0.0.1',9999))

while True:
#发送消息
msg=input('input:')
sockfd.send(msg.encode())
if not msg:
break

#接受消息
data=sockfd.recv(1024)
print(data.decode())

#关闭连接
sockfd.close()

tcp_server.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from socket import *
#创建流式套接字
sockfd=socket(AF_INET,SOCK_STREAM,0)

#绑定IP和端口
sockfd.bind(('127.0.0.1',8882))

#设置为监听套接字,创建监听队列
sockfd.listen(5)
while True:
#等待客户端连接
print('waiting for connect...')
input('hello')
connfd,addr=sockfd.accept()
print('connect from:',addr)
while True:
#收发消息
data=connfd.recv(10)
if not data:
break
print(data.decode())
connfd.send('receive your message'.encode())

#关闭套接字
connfd.close()
sockfd.close()

🐶 您的支持将鼓励我继续创作 🐶