python socket编程5 - 最简单的命令行启动的tcp/udp server/client例子

news/2024/5/18 11:52:37 标签: python, tcp/ip, udp, socket

一、TCP 服务端和客户端

1、server 服务端

from socket import *

serverPort = 12000
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('', serverPort))
serverSocket.listen(1)
print('TCP server 已经启动...')

while True:
    print('服务器已经准备接受客户端...')
    # 阻塞,等待客户端的连接
    clientSocket, addr = serverSocket.accept()
    print('已经有客户端连接')

    # 接受客户端发送的信息
    sentence = clientSocket.recv(1024).decode()

    # 将接受内容(小写字母组成的句子)全部转成大写字母
    capitalizedSentence = sentence.upper()

    # 发送大写字母组成的句子
    clientSocket.send(capitalizedSentence.encode())

    # 关闭客户端连接
    clientSocket.close()

2、client 客户端

from socket import *

serverName = '127.0.0.1'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)

# 连接服务器
clientSocket.connect((serverName, serverPort))
# 接受输入
sentence = input('输入小写字母组成的句子:')

# 发送小写字母组成的句子
clientSocket.send(sentence.encode())

# 接受服务器返回的大写字母组成的句子
modifiedSentence = clientSocket.recv(1024)
print('服务端返回:', modifiedSentence.decode())

# 关闭客户端连接
clientSocket.close()

二、UDP 服务端和客户端

1、server 服务端

from socket import *

serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print('UDP服务已经启动...')
while True:
    message, clientAddress = serverSocket.recvfrom(2048)
    modifiedMessage = message.decode().upper()
    serverSocket.sendto(modifiedMessage.encode(), clientAddress)

2、client 客户端

from socket import *

serverName = '127.0.0.1'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = input('输入小写字母组成的句子:')
clientSocket.sendto(message.encode(), (serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print(“服务端返回的内容为:”+modifiedMessage.decode())
clientSocket.close()

后面的例子会参照上面的例子进行扩展。


http://www.niftyadmin.cn/n/5235874.html

相关文章

【Collection - LinkedList源码解析】

本文主要对Collection - LinkedList进行源码解析。 Collection - LinkedList源码解析 概述LinkedList实现 底层数据结构构造函数getFirst(), getLast()removeFirst(), removeLast(), remove(e), remove(index)add()addAll()clear()Positional Access 方法查找操作Queue 方法Deq…

HR看好的字符函数和字符串处理函数!!!

本篇会加入个人的所谓‘鱼式疯言’❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言,而是理解过并总结出来通俗易懂的大白话,我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的,可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 前言 在本篇…

MQ - KAFKA 基础篇

##1、KAFKA的核心组件/API Producer API,它允许应用程序向一个或多个 topics 上发送消息记录 Consumer API,允许应用程序订阅一个或多个 topics 并处理为其生成的记录流 Streams API,它允许应用程序作为流处理器,从一个或多个主…

02-MyBatis的SQL映射文件的配置

SQL映射文件 XxxxMapper.xml:专门用来编写SQL语句的映射文件(一个表对应一个),如t_user表一般会对应一个UserMapper.xml mapper的namespace属性 如果两个SQL映射文件中的sqlid重名,Mybatis无法确定执行哪个SQL语句会提示sqlid在集合中不明确(请尝试使⽤包含名称空间的全名或…

C#网络编程System.Net.WebClient 类vs System.Net.Http.HttpClient 类

目录 一、WebClient 类 1.WebClient 将数据上传到资源的方法 2.WebClient 从资源下载数据的方法 3.示例源码 4.生成效果 二、HttpClient 类 1.示例源码 2.生成效果 为什么要把两者拿出来pk呢?那是因为WebClient已经在.NET 6.0以后得版本被弃用了&#xff0c…

Nginx的缓存配置与其他配置

一、Nginx的缓存配置 http {server {#设置缓存的通配符,只要满足后缀是jpg或png或swf或gif的就进行缓存(意思就>是当用户浏览网页时,会将网页上所有jpg或png或swf或gif都缓存起来,下次用户再次访问的时候就直接从本地加载图片…

Nacos源码解读04——服务发现

Nacos服务发现的方式 1.客户端获取 1.1:先是故障转移机制判断是否去本地文件中读取信息,读到则返回 1.2:再去本地服务列表读取信息(本地缓存),没读到则创建一个空的服务,然后立刻去nacos中读取更新 1.3:读到了就返回,同时开启定时…

〖大前端 - 基础入门三大核心之JS篇㊻〗- JS + CSS实现动画

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…