TCP客户端和服务端
服务端
import socket
"""
import socket
from socket import SOL_SOCKET,SO_REUSEADDR
"""
import socket
from socket import SOL_SOCKET,SO_REUSEADDR
"""
1.建立socket对象
2.绑定ip和端口,元组形式传递
3.监听
4.接受链接
5.接收客户端信息
6.返回客户端信息
7.关闭连接(关闭客户端套接字,关闭服务端套接字)"""
server=socket.socket() #建立socket对象
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)#S.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
# 这里value设置为1,表示将SO_REUSEADDR标记为TRUE,
# 操作系统会在服务器socket被关闭或服务器进程终止后马上释放该服务器的端口,否则操作系统会保留几分钟该端口。
server.bind(("127.0.0.1",9000)) #绑定ip和端口,元组形式传递
server.listen() #监听
conn,addr=server.accept() #接受链接
ret=conn.recv(1024) #接收客户端信息
conn.send("接收成功") #返回客户端信息
conn.close() #关闭客户端套接字
sk.close() #关闭服务端套接字
客户端
import socket
"""socket 客户端
1.建立客户端套接字
2.链接服务器
3.发送信息
4.接收返回信息
5.断开连接(关闭客户端套接字)"""
client=socket.socket()
client.connect(("127.0.0.1",9000))
client.send("发送数据")
client.recv(1024)
client.close()
服务端循环接收消息
from socket import *
tcp_server=socket(AF_INET,SOCK_STREAM)
tcp_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
tcp_server.bind(("127.0.0.1",8888))
tcp_server.listen(5)
"""循环读取消息"""
while True:
print("等待接入链接........")
conn,addr=tcp_server.accept()
print("接入新的链接")
while True:
"""循环接收消息,异常处理(当可以端异常断开时候,能够正常接入下一个链接)"""
try:
print("开始接收消息")
data=conn.recv(1024)
if not data: #接收数据为空的时候 认为接收完成,并且断开链接
print("数据接收完毕")
conn.close()
break
print(data)
conn.send(data.upper())
except Exception as e:
break
conn.close()
tcp_server.close()