Socket简单TCP通信

使用socket类实现tcp通信:

socket概念:

socket是应用层与TCP/IP协议族通信的中间软件抽象层,他是一组接口。
在这里插入图片描述

server端(服务端):

# import socket
from socket import *

# 服务端IP和端口号
ip_port = ('127.0.0.1', 8001)

# 最大连接数
back_log = 5
buf_size = 1024


phone = socket(AF_INET, SOCK_STREAM)  # 创建基于tcp的socket对象

phone.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) # 有时候重启服务器会出现问题,加上这一句就行。

phone.bind(ip_port)  # 绑定连接(即IP和端口号)

phone.listen(back_log)  # 半连接池 监听连接

while True:  # 外层连接循环
    print('服务端启动!')
    conn, addr = phone.accept()  # 等待建立连接(阻塞到此)
    print('双向连接',conn)
    print('客户端的IP地址与端口号', addr)

    while True:  # 内层收发循环

        try:
            msg = conn.recv(buf_size)  # 接收1024字节的消息

            if not msg:
                raise Exception

            print('服务端接收的消息', msg.decode('utf-8'))

            conn.send(msg.upper())  # 发消息
        except Exception:
            break

    conn.close()  # 结束电话连接

# phone.close()  # 关机

client客户端:

# import socket
from socket import *
ip_port = ('127.0.0.1', 8001)
back_log = 5
buf_size = 1024


cphone = socket(AF_INET, SOCK_STREAM)  # 创建socket对象


cphone.connect(ip_port)  # 开始连接

while True:

    msg = input('>>>')
    if not msg:
        continue
    if msg == "exit":
        break
    cphone.send(msg.encode('utf-8'))  # 以字节形式发送 bytes('hello', encoding='utf-8')

    data = cphone.recv(buf_size)  # 接收1024字节的消息

    print('客户端接收的消息', data.decode('utf-8'))

cphone.close()

这是最简单一个基于tcp的socket通信。可以有一个服务器,多个客户端。因为tcp基于连接进行通信。同时多个客户端连接会导致,第一个客户端占着服务端,当他释放端口时,其他客户端才能与服务端进行通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值