一.创建TCP服务端流程
#tcpserver.py
'''创建TCP服务端1. s = socket() #创建一个套接字,参数:套接字类型AF_(INET/INET6/UNIX/TIPC/NETLINK等),链接类型(TCP/UDP)
2. s.bind((host,port)) #占用一个端口,绑定接收客户端链接的IP, 本机是127.0.0.1 localhost
3.clientsock = s.accept() #accept返回两个元素,第一个客户端连接对象(客户端实例信息),第二个是客户端ip,port两个元素组成的一个元组
4. s.listen(5) #监听传入的客户端链接
二.创建TCP客户端流程
#tcpclient.py
1.c = socket() #创建客户端实例
2.c.connect() #客户端要连接的server,括号内是一个元组,填上服务端的ip和port
3.c.send() #客户端发送消息
4. c.recv(1024)
HOST=''
PORT=5003
BUFSIZ=1024
ADDR=(HOST,PORT)
server = socket.socket(AF_INET,SOCK_STREAM) #括号内不写,默认就是TCP
server.bind(ADDR) #ADDR是一个元组哦,里面包含server主机IP和PORT,就是让客户访问的IP和PORT。
三.简单的案例,创建一个server,协议不填,默认就是TCP,server_socket.py
def main():
server = socket.socket() #默认就是TCP
server.bind(("localhost",6695)) #服务器的IP和对外链接的端口6695
server.listen(1) #监听一个用户连接
print("等待client连接")
#当有用户(client)发起连接时,就触发.这里生产一个二元组,元组内地一个元素是用户实例,第二个元素是用户IP和端口
conn,addr = server.accept()
print("用户已连接")
print("user:%s"%conn) #打印用户实例
print("IP:%s,PORT:%s"%(addr[0],addr[1])) #打印用户的IP和端口
data = conn.recv(1024) #收到的用户信息用 用户实例.recv() 的方式提取,1024是缓存大小,可以不写
print("收到消息:",data.decode()) #因为python3是用bytes传输,所以这里需要解码
#server端也可以发送数据给客户端,需要注意的是消息需要编码,这里用的utf-8
conn.send("MESSAGE HAS RECEIVED.".encode("utf-8"))
#如果对话结束,就关闭server端
server.close()
四、客户端实例 client_socket.py
def client():
client = socket.socket()
client.connect(("localhost",6695))
client.send("川大智胜002253:19.27".encode('utf-8'))
data = client.recv(1024)
print(data.decode())