python实现TCP通信

本例是在Ubuntu虚拟机中本机互传实现的TCP通信。
一、TCP服务器端(server端)
1 创建套接字,绑定套接字到本地IP与端口

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM),s.bind()

2.开始监听链接

s.listen()

3.进入循环,不断接受客户端的请求:

s.accept()

4.然后接收传来的数据,并发送给对方数据

s.recv() , s.sendall()

5.传输完毕后,关闭套接字

s.close()

服务器端代码:

#!usr/bin/python
import socket
ip_port = ('127.0.0.1',48185)
BUFSIZE = 1024
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(ip_port)
s.listen(1)
conn,addr = s.accept()
print('connected with',addr)
while True:
    data = conn.recv(BUFSIZE)
    data = data.decode()
    if not data:
        break
    print('receive:',data)
    send = input('send:')
    conn.sendall(send.encode())
conn.close()
s.close()

二、TCP客户端(client端)
1 创建套接字,连接远端地址

socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.connect()

2 连接后发送数据和接收数据
s.send(), s.recv()
3 传输完毕后,关闭套接字
s.close()
客户端代码:

#!usr/bin/python
import socket
import sys
ip_port = ('127.0.0.1',48185)
BUFSIZE = 1024
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
    s.connect(ip_port)
except:
    print('server not find or not open')
    sys.exit()
while True:
    trigger = input("send:")
    s.sendall(trigger.encode())
    data = s.recv(BUFSIZE)
    data = data.decode()
    print('received:',data)
    if trigger.lower() == '1':
        break
s.close()
*******************************************************************************
下面讲的是socket的模块功能
*******************************************************************************

1.socket类型:
套接字格式:
socket(family,type[,protocal])使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。
在这里插入图片描述
2.socket函数
注意点:
1)TCP发送数据时,已建立好TCP连接,所以不需要指定地址。UDP是面向无连接的,每次发送要指定是发给谁。
2)服务端与客户端不能直接发送列表,元组,字典。需要字符串化repr(data)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yhwang-hub

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

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

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

打赏作者

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

抵扣说明:

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

余额充值