TCP实现

服务器端

1. 创建套接字对象  
   socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   socket.AF_INET: 服务器之间通信使用IPV4   
   socket.SOCK_STREAM: 流式socket - TCP   
2. 绑定本地地址,地址用元组来表示,包含2个元素(IP和PORT)
   socket.bind(adress Tuple)   
3. 开始监听    
   socket.listen()    
4. 不断的接受客户端的连接请求   
   socket.accept()     
5. 接收客户端传来的数据,发送给对方数据 
   socket.recv()   
   socket.sendall()    
6. 传输完毕之后,关闭套接字   
   socket.close() 

案例:

import socket
# 1. 创建套接字对象
# socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# socket.AF_INET: 服务器之间通信使用IPV4
# socket.SOCK_STREAM: 流式socket - TCP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2. 绑定本地地址,地址用元组来表示,包含2个元素(IP和PORT)
# socket.bind(adress Tuple)
address = ("localhost", 9000)
s.bind(address)

# 3. 开始监听
# socket.listen()
s.listen()

# 4. 不断的接受客户端的连接请求
# socket.accept()
while 1:
    conn, clientAddress = s.accept()
    print("%s:%d客户端连接成功" % clientAddress)

    # 5. 接收客户端传来的数据,发送给对方数据
    # socket.recv()
    # socket.sendall()
    while 1:
        msg = conn.recv(1024)
        print(msg.decode("utf8"))
        conn.send(msg.upper())
        if msg.decode("utf8") == "exit":
            conn.close()
            break

客户端1. 创建套接字对象  
   socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
   socket.AF_INET: 服务器之间通信使用IPV4     
   socket.SOCK_STREAM: 流式socket - TCP  
2. 连接服务器  
   socket.connect(addressTuple)    
3. 收发数据   
   socket.recv()   
   socket.sendall()   
4. 传输完毕之后,关闭套接字  
   socket.close() 

案例:

import socket
# 1. 创建套接字对象
# socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# socket.AF_INET: 服务器之间通信使用IPV4
# socket.SOCK_STREAM: 流式socket - TCP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 连接服务器
# socket.connect(addressTuple)
serverAddress = ("101.91.150.147", 9000)
s.connect(serverAddress)
# 3. 收发数据
# socket.recv()
# socket.sendall()
while 1:
    msg = input(">>: ").strip()
    if len(msg) == 0:
        continue
    s.sendall(msg.encode("utf8"))
    ret = s.recv(1024)
    print(ret.decode("utf8"))
    if ret.decode("utf8") == "EXIT":
        break
# 4. 传输完毕之后,关闭套接字
# socket.close()
s.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渊途

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值