当前位置 : 主页 > 编程语言 > python >

python-- socket_tcp

来源:互联网 收集:自由互联 发布时间:2022-07-13
socket 是服务端和客户端进行通信的,我们先来写一个服务端 服务端 import socket server = socket.socket() # 声明类型 server.bind(('localhost', 8888)) # 绑定ip地址和端口,是个元组 server.listen() # 开始

socket 是服务端和客户端进行通信的,我们先来写一个服务端

服务端

import socket

server = socket.socket() # 声明类型
server.bind(('localhost', 8888)) # 绑定ip地址和端口,是个元组
server.listen() # 开始监听
conn, addr = server.accept() # conn就是客户端连过来而在服务器端为其生成的一个连接实例,addr是他的地址在这里等数据发送过来
print(conn, addr)
data = conn.recv(1024) # 接收数据
print('recv:', data)
conn.send(data.upper()) # 将接收的数据变大写返回给
conn.close()
server.close()

客户端

import socket

client = socket.socket() # 声明协议类型,默认ipv4,http。同时生成socket连接对象
client.connect(('localhost', 8888)) # 连接服务器的ip 和端口,以元组的形式
client.send(b'hello world!') # 发数据,要以字节发送
data = client.recv(1024) # 接收数据
print('recv:', data)
client.close()

这样服务端和客户端就都写好了,先来启动服务端,在来启动客户端,查看控制台

服务端打印的数据如下

<socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8888), raddr=('127.0.0.1', 56520)> ('127.0.0.1', 56520)
recv: b'hello world!'

客户端打印的数据如下

recv: b'HELLO WORLD!'

接受中文

服务端

import socket

server = socket.socket() # 声明类型
server.bind(('localhost', 8888)) # 绑定ip地址和端口
server.listen() # 开始监听
conn, addr = server.accept() # conn就是客户端连过来而在服务器端为其生成的一个连接实例,addr是他的地址
data = conn.recv(1024) # 接收数据
print('recv:', data.decode())
conn.send(data.upper()) # 将接收的数据变大写返回给

客户端

import socket

client = socket.socket() # 声明协议类型,默认ipv4,http。同时生成socket连接对象
client.connect(('localhost', 8888)) # 绑定ip地址和端口,以元组的形式
client.send('我爱北京天安门'.encode('utf-8')) # 发数据有汉字加encode('utf-8')
data = client.recv(1024) # 接收数据
print('recv:', data.decode())
client.close()

服务端打印的数据如下

recv: 我爱北京天安门

客户端打印的数据如下

recv: 我爱北京天安门

和客户端连续通信

服务端

import socket

server = socket.socket()
server.bind(('localhost', 8888))
server.listen()
conn, addr = server.accept() # 放到while里面就卡住了, 因为和一个通完一句话之后,会等另一个连接
while True:
data = conn.recv(1024) # 接收数据
if not data: # 判断接收的数据为空就断开
break
print('recv:', data.decode())
conn.send(data.upper())

客户端

import socket

client = socket.socket()
client.connect(('localhost', 8888))
while True:
msg = input('>>').strip()
client.send(msg.encode('utf-8'))
data = client.recv(1024) # 接收数据
print('recv:', data.decode())

方法二

服务端

import socket

server = socket.socket()
server.bind(('localhost', 6969)) # 绑定要监听端口
server.listen(5) # 监听
print("我要开始等电话了")
while True:
conn, addr = server.accept() # 等电话打进来
print("电话来了")
while True:
data = conn.recv(1024)
print("recv:", data.decode())
if not data: # 客户端断开后返回上个while继续等
print("client has lost...")
break
conn.send(data.upper())

server.close()

客户端

import socket

client = socket.socket()
client.connect(('localhost', 6969))
while True:
msg = input(">>:").strip()
if len(msg) == 0: # 输入的为空
continue
client.send(msg.encode("utf-8"))
data = client.recv(10240)
print("recv:", data.decode())
client.close()

 



【本文转自:美国服务器 http://www.558idc.com/mg.html欢迎留下您的宝贵建议】
上一篇:python--装饰器
下一篇:没有了
网友评论