| |
| |
| |
| from socket import * |
| |
| |
| |
| IP = '' |
| |
| PORT = 50000 |
| |
| BUFLEN = 512 |
| |
| |
| |
| |
| listenSocket = socket(AF_INET, SOCK_STREAM) |
| |
| |
| listenSocket.bind((IP, PORT)) |
| |
| |
| |
| listenSocket.listen(8) |
| print(f'服务端启动成功,在{PORT}端口等待客户端连接...') |
| |
| dataSocket, addr = listenSocket.accept() |
| print('接受一个客户端连接:', addr) |
| |
| while True: |
| |
| |
| recved = dataSocket.recv(BUFLEN) |
| |
| |
| |
| if not recved: |
| break |
| |
| |
| info = recved.decode() |
| print(f'收到对方信息: {info}') |
| |
| |
| dataSocket.send(f'服务端接收到了信息 {info}'.encode()) |
| |
| |
| dataSocket.close() |
| listenSocket.close() |
| |
| |
| |
| |
| from socket import * |
| |
| IP = '127.0.0.1' |
| SERVER_PORT = 50000 |
| BUFLEN = 1024 |
| |
| |
| dataSocket = socket(AF_INET, SOCK_STREAM) |
| |
| |
| dataSocket.connect((IP, SERVER_PORT)) |
| |
| while True: |
| |
| toSend = input('>>> ') |
| if toSend =='exit': |
| break |
| |
| dataSocket.send(toSend.encode()) |
| |
| |
| recved = dataSocket.recv(BUFLEN) |
| |
| if not recved: |
| break |
| |
| print(recved.decode()) |
| |
| dataSocket.close() |
| |
| |
| |
| from socket import * |
| from threading import Thread |
| |
| IP = '' |
| PORT = 50000 |
| BUFLEN = 512 |
| |
| |
| def clientHandler(dataSocket,addr): |
| while True: |
| recved = dataSocket.recv(BUFLEN) |
| |
| if not recved: |
| print(f'客户端{addr} 关闭了连接' ) |
| break |
| |
| |
| info = recved.decode() |
| print(f'收到{addr}信息: {info}') |
| |
| dataSocket.send(f'服务端接收到了信息 {info}'.encode()) |
| |
| dataSocket.close() |
| |
| |
| listenSocket = socket(AF_INET, SOCK_STREAM) |
| |
| |
| listenSocket.bind((IP, PORT)) |
| |
| listenSocket.listen(8) |
| print(f'服务端启动成功,在{PORT}端口等待客户端连接...') |
| |
| while True: |
| |
| dataSocket, addr = listenSocket.accept() |
| addr = str(addr) |
| print(f'一个客户端 {addr} 连接成功' ) |
| |
| |
| th = Thread(target=clientHandler,args=(dataSocket,addr)) |
| th.start() |
| |
| listenSocket.close() |
| |
| |
| |
| |
| import asyncio, socket |
| IP = '' |
| PORT = 50000 |
| BUFLEN = 512 |
| |
| |
| async def handle_echo(reader, writer): |
| addr = writer.get_extra_info('peername') |
| while True: |
| data = await reader.read(100) |
| if not data: |
| print(f'客户端{addr}关闭了连接') |
| writer.close() |
| break |
| |
| message = data.decode() |
| print(f'收到{addr}信息: {message}') |
| |
| writer.write(data) |
| |
| loop = asyncio.get_event_loop() |
| coro = asyncio.start_server(handle_echo, IP, PORT, loop=loop) |
| server = loop.run_until_complete(coro) |
| |
| |
| print('服务端启动成功,在{}端口等待客户端连接...'.format(server.sockets[0].getsockname()[1])) |
| try: |
| loop.run_forever() |
| except KeyboardInterrupt: |
| pass |
| |
| |
| server.close() |
| loop.run_until_complete(server.wait_closed()) |
| loop.close() |
| |
| import socket,json |
| |
| BUFF_LEN = 400 |
| ADDR = ("", 18000) |
| |
| |
| server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
| |
| server_socket.bind(ADDR) |
| |
| while True: |
| try: |
| recvbytes, client_addr = server_socket.recvfrom(BUFF_LEN) |
| except socket.timeout: |
| continue |
| |
| print(f'来自 {client_addr} 的请求') |
| |
| |
| message = json.loads(recvbytes.decode('utf8')) |
| print(message) |
| if message['action'] == '获取信息': |
| |
| username = message['name'] |
| |
| |
| message = { |
| 'action' : '返回信息', |
| 'info' : f'{username} 的信息是:xxxxxxxx' |
| } |
| |
| sendbytes = json.dumps(message).encode('utf8') |
| server_socket.sendto(sendbytes, client_addr) |
| |
| |
| |
| import socket,json |
| |
| BUFF_LEN = 400 |
| SERVER_ADDR = ("127.0.0.1", 18000) |
| |
| |
| client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
| |
| client_socket.settimeout(2) |
| |
| |
| message = { |
| 'action' : '获取信息', |
| 'name' : '白月黑羽' |
| } |
| |
| sendbytes = json.dumps(message).encode('utf8') |
| client_socket.sendto(sendbytes, SERVER_ADDR) |
| try: |
| recvbytes, server = client_socket.recvfrom(BUFF_LEN) |
| |
| message = json.loads(recvbytes.decode('utf8')) |
| print(message) |
| except socket.timeout: |
| print('接收消息超时') |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
2022-10-08 标识符、运算符
2022-10-08 字面量、注释、变量、数据类型、数据类型转换
2022-10-08 下载安装go,eclipse配置go
2022-10-08 python开发环境