TCP是一个面向连接的协议,意味着客户和服务器开始发送数据之前,它们先要握手和创建一个TCP连接。TCP连接的一端与客户套接字相联系,另一端与服务器套接字相联系。当创建该TCP连接时,我们将其与客户套接字地址(IP地址和端口号)和服务器套接字地址(IP地址和端口号)关联起来。使用创建的TCP连接,当一侧要向另一侧发送数据时,它只需经过其套接字将数据丢进TCP连接。这与UDP不同,UDP服务器在将分组丢进套接字之前必须为其附上一个目的地地址。
客户端:
import socket
import sys
IP = '119.45.115.128' # 填写服务器端的IP地址
port = 1200 # 端口号必须一致
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((IP, port))
except Exception as e:
print(e)
print('服务器没有找到或未打开!')
sys.exit()
while True:
try:
trigger = input("请输入待发送的数据:(exit-退出)")
if trigger == 'exit':
break
s.sendall(trigger.encode())
data = s.recv(1024)
data = data.decode()
print('从服务器接收到的结果为:', data)
except Exception as e:
print(e)
s.close()
服务端:
import socket
host = "192.168.0.104" # 服务器端可以写"localhost",可以为空字符串"",也为本机IP地址
port = 1200 # 端口号
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
print('服务器已经启动')
conn, addr = s.accept()
print('', addr)
print('已经建立连接')
while True:
try:
data = conn.recv(1024)
data = data.decode()
if not data:
break
print('从客户端接收到信息为:', data)
send = input('给客户端接的回复信息为:')
conn.sendall(send.encode())
except Exception as e:
print(e)
conn.close()
s.close()