python-- socket_tcp

简介: python-- socket_tcp

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())  # 将接收的数据变大写返回给
server.close()

客户端

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()

相关文章
|
1月前
|
Python
python socket 简单通信
python socket 简单通信
32 1
|
15天前
|
网络协议 Unix Linux
python socket和socketserver
python socket和socketserver
|
15天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
26天前
|
分布式计算 网络协议 Python
Python网络编程:socket编程
Socket 编程是网络编程的重要部分,主要用于在不同计算机之间进行通信。Python 提供了一个非常强大的 socket 库,使得网络编程变得简单和灵活。本篇博文将详细介绍 Python 的 socket 编程,包括基础概念、核心组件、常用功能,并附上一个综合的示例及其运行结果。
|
18天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
20天前
|
网络协议 数据格式 Python
python Socket无限发送接收数据方式
Socket是指套接字,是对网络中不同主机上的应用进程之间进行双向通信的端点的一种抽象。 一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。
|
18天前
|
Linux Python
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
|
2月前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
【7月更文挑战第25天】在网络技术快速发展的背景下, Python因其简洁的语法和强大的库支持成为学习网络编程的理想选择。
54 5
|
2月前
|
网络协议 开发者 Python
深度探索Python Socket编程:从理论到实践,进阶篇带你领略网络编程的魅力!
【7月更文挑战第25天】在网络编程中, Python Socket编程因灵活性强而广受青睐。本文采用问答形式深入探讨其进阶技巧。**问题一**: Socket编程基于TCP/IP,通过创建Socket对象实现通信,支持客户端和服务器间的数据交换。**问题二**: 提升并发处理能力的方法包括多线程(适用于I/O密集型任务)、多进程(绕过GIL限制)和异步IO(asyncio)。**问题三**: 提供了一个使用asyncio库实现的异步Socket服务器示例,展示如何接收及响应客户端消息。通过这些内容,希望能激发读者对网络编程的兴趣并引导进一步探索。
27 4
|
2月前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
【7月更文挑战第26天】在网络的数字宇宙中,Python Socket编程是开启网络世界大门的钥匙。本指南将引领你从基础到实战,成为网络世界的建筑师。
49 2