加载中...

TCP基本语法

TCP基础程序

Client

# ### TCP协议 客户端
import socket
# 1.创建一个socket对象
sk = socket.socket()

# 2.与服务端建立连接
sk.connect( ("127.0.0.1" , 9000) )

# 3.收发数据的逻辑
"""发送的数据类型是二进制字节流"""
"""b开头的字符串是二进制字节流格式,要求字符类型必须是ascii编码"""
sk.send("今天我们学习网络编程".encode()) 

# 接受数据
res = sk.recv(1024)
print(res.decode())
# 4.关闭连接
sk.close()


Sever

# ### socket 服务端
"""
一发一收是一对,不匹配会导致数据异常
send 发送 recv 接受
"""
import socket

# 1.创建一个socket对象
sk = socket.socket()

# 一个端口绑定多个程序(仅在测试时使用)
# sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

# 2.在网络中注册该主机(绑定对应的ip和端口号) 
sk.bind(  ("127.0.0.1" , 9000) )
# 3.开启监听
sk.listen()

# 4.三次握手
# addr 元祖的形式的套接字
# conn 客户端的实例化的对象
conn,addr = sk.accept()  

# 5.收发数据的逻辑

# 接受数据
"""一次最多接受1024个字节"""
res = conn.recv(1024)
print(res)
print(res.decode())

# 发送数据
conn.send("好好学习,天天向上".encode())


# 6.四次挥手
conn.close()

# 7.退还端口
sk.close()

TCP循环发消息

Client

# ### 客户端
import socket

# (1) 创建socket对象
sk = socket.socket()
# (2) 连接服务端
sk.connect( ("127.0.0.1" , 9001) )
# (3) 收发数据的逻辑

while True:
	# 发送数据
	strvar = input("[客户端]请输入您要发送的数据>>>")
	sk.send(strvar.encode())
	
	# 接受数据
	res = sk.recv(1024)
	if res == b"q":
		break
	print(res.decode())
    
# (4) 关闭连接
sk.close()

Sever

# ### 服务端
import socket

# (1) 创建socket对象
sk = socket.socket()

# 一个端口绑定多个程序(仅在测试时使用)
# sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

# (2) 在网络中注册该主机(绑定ip和端口号)
sk.bind(  ("127.0.0.1" , 9001)  )
# (3) 监听端口
sk.listen()

# (4) 三次握手
# (5) 收发数据的逻辑


while True:
	conn,addr = sk.accept()
    # conn 对方实例化的对象 对其进行操作
    # addr 对方的套接字 元祖的形式
	while True:
		# 接受数据
		res = conn.recv(1024)
		print(res.decode())
		
		# 发送数据
		strvar = input("[服务端]请输入您要发送的数据>>>")
		conn.send(strvar.encode())
		
		# 退出
		if strvar == "q":
			break

	# (6) 四次挥手
	conn.close()
	
# (7) 退还端口
sk.close() 
posted @ 2024-03-20 09:34  江寒雨  阅读(37)  评论(0)    收藏  举报