socket 异步I/O
# 客服端
# -*- coding: utf-8 -*-
import socket
import threading # from collections import deque
# q = deque(maxlen=3) # server = socket.socket()
# print(server)
# server.bind(("localhost", 2564)) # 绑定端口
# server.listen(2) # 监听
# conn, address = server.accept()
# print(conn)
# conn.sendall(bytes("来自客服端的消息...", encoding="utf-8"))
# while True:
# # server.setblocking(False) # 非阻塞
# # conn, address = server.accept() # 接收连接许可,接受连接并返回(conn,address)
# print(conn, address)
# f_client = conn.recv(1024) # 来自客户端发来的消息
# if f_client:
# print(str(f_client, encoding='utf-8'))
# # s = input("发送至客户端:")
# # if s:
# conn.sendall(bytes('你好', encoding="utf-8"))
# # if server.recv(100): def Server(host, port):
server = socket.socket()
server.bind((host, port))
server.listen(4)
conn, address = server.accept()
m = "来自客户端:"
conn.sendall(bytes(m,encoding="utf-8"))
while True:
client_mess = conn.recv(1024) # 接收客户端消息,最大字节数1024
print(str(client_mess, encoding='utf-8'))
conn.sendall(bytes('你好', encoding='utf-8')) if __name__ == "__main__":
t1 = threading.Thread(target=Server, args=("localhost", 2564,))
t1.start()
# 客户端
# -*- coding: utf-8 -*-
import socket client = socket.socket()
print(client)
client.connect(("localhost", 2564)) # 连接客服端(server)
# client.listen(5)
# conn, address = client.accept()
print(str(client.recv(1024),encoding='utf-8'))
while True:
c = input("发送消息至客服端:")
if c:
client.sendall(bytes(c, encoding="utf-8"))
ret = client.recv(1024) # 打印来自客服端的消息
if ret:
print(str(ret, encoding='utf-8'))
参照:https://www.cnblogs.com/aylin/p/5572104.html#3651306
socket 异步I/O的更多相关文章
- socket异步编程--libevent的使用
使用 libevent 和 libev 提高网络应用性能 http://www.ibm.com/developerworks/cn/aix/library/au-libev/ libevent实现ht ...
- Socket异步发送的同步控制
在网络通信中,我们使用Socket异步发送数据,但在客户端,往往是需要等待服务器的返回结果后(握手过程)再往下执行,这就涉及到同步控制了,在多次的实现中,使用AutoResetEvent,实现不,即有 ...
- [转] socket异步编程--libevent的使用
这篇文章介绍下libevent在socket异步编程中的应用.在一些对性能要求较高的网络应用程序中,为了防止程序阻塞在socket I/O操作上造成程序性能的下降,需要使用异步编程,即程序准备好读写的 ...
- .net平台下socket异步通讯(代码实例)
你应该知道的.net平台下socket异步通讯(代码实例) 1,首先添加两个windows窗体项目,一个作为服务端server,一个作为客户端Client 2,然后添加服务端代码,添加命名空间,界面上 ...
- 基于.net的Socket异步编程总结
最近在为公司的分布式服务框架做支持异步调用的开发,这种新特性的上线需要进行各种严格的测试.在并发性能测试时,性能一直非常差,而且非常的不稳定.经过不断的分析调优,发现Socket通信和多线程异步回调存 ...
- 你应该知道的.net平台下socket异步通讯(代码实例)
1,首先添加两个windows窗体项目,一个作为服务端server,一个作为客户端Client 2,然后添加服务端代码,添加命名空间,界面上添加TextBox控件 using System.Net; ...
- C# Socket异步聊天例子
最近在配合游戏服务器端搞一个客户端通信,客户端是unity搞的,理所当然就高C#了,上手之前先看了一下C# Socket通信这一块,基本不考虑同步方式,而异步方式,微软也提供了两套API,一套是Beg ...
- Socket异步通讯
1.可以通过多线程来解决(一会补上) 2.Socket在tcp/udp两种通信协议下的异步通信: 基于TCP的异步通信: BeginAccept方法和endeaccept方法 包含在System.Ne ...
- Socket异步存储示例
异步客户端存储示例: using System; using System.Net; using System.Net.Sockets; using System.Threading; using S ...
- socket 异步选择 WSAAsyncSelect 用法
WSAAsyncSelect 实现给异步socket给了另一种实现方式,就是通过窗口消息的方式来提醒对socket接收还是发送 msdn有非常全面的解释:https://msdn.microsoft. ...
随机推荐
- 解决linux 终端UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte
vi /etc/locale.conf 修改LANG="zh_CN.gbk" 最后执行source /etc/locale.conf 即可永久生效,下次登录,中文就不会乱码了.
- C++ lambda函数及其用法(转)
由于接触C++不久,很多东西比较陌生,今天看阿里云OSS的C++ SDK文件下载部分例子,发现有如下lambda表达式用法,故了解一下相关知识 /*获取文件到本地文件*/ GetObjectReque ...
- Query的选择器
Query的选择器 一. 基本选择器 1. ID选择器 ID选择器#id就是利用DOM元素的id属性值来筛选匹配的元素,并以iQuery包装集的形式返回给对象. ...
- ubuntu 16.04.1上安装并使用nginx
1.安装 sudo apt-get install nginx 2.这时候应该就已经启动了,跳到步骤4. 通过命令“ps -aux | grep nginx”看下是否启动 3.如果没有启动,可以使用命 ...
- 关于npm 的注意事项
npm install 之后 会生成package-lock.json 文件 ,注意这个文件不能删除,否则每次 npm i 之后,node_modules都装的是最新的,会出现意想不到的问题.
- 【巨杉数据库SequoiaDB】巨杉Tech | 四步走,快速诊断数据库集群状态
1.背景 SequoiaDB 巨杉数据库是一款金融级分布式数据库,包括了分布式 NewSQL.分布式文件系统与对象存储.与高性能 NoSQL 三种存储模式,分别对应分布式在线交易.非结构化数据和内容管 ...
- HDU-1506 Largest Rectangle in a Histogram【单调栈】
Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...
- 【你不知道的javaScript 上卷 笔记5】javaScript中的this词法
function foo() { console.log( a ); } function bar() { var a = 3; foo(); } var a = 2; bar(); 上面这段代码为什 ...
- Nginx绑定IP,解决session共享
1.Nginx通过负载均衡IP地址固定绑定,解决Session共享 upstream note.java.itcast.cn{ ip_hash; server ...
- mac 命令行下 vim 的使用
vi/vim 使用实例 使用 vi 来建立名为 test.txt 的文件 vi test.txt1按下 ESC 按钮回到一般模式 在一般模式中按下 :wq 储存后离开 vi 基本上 vi/vim 共分 ...