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. ...
随机推荐
- 中间件c10k问题
中间件c10k问题 没有使用iocp/epoll/kqueue通讯的中间件,中间件就算部署在拥有多核CPU的强大服务器上,最头痛的问题是C10K问题. 中间件没有办法通过优化程序,提升CPU利用率来处 ...
- ASP.NET简介及网页基础知识
ASP:Active Server Page. asp.net属于.NET Framework的一部分,命名空间是System.Web,主要用于网络程序的开发. .net版本演化(asp.net和.n ...
- 使用ssh localhost命令,发生异常ssh: connect to host localhost port 22: Connection refused
使用"ssh localhost"命令,失败: 问题分析如下: 出现这个问题是因为Ubuntu默认没有安装openssh-server.检查是否安装了openssh-server, ...
- 0219 springmvc-拦截器和响应增强
拦截器 拦截器分同步拦截器和异步拦截器: HandlerInterceptor 方法和执行时机 可以看DispathcerServlet的原来确定它的三个方法的执行时机: AsynHandlerInt ...
- Win10安装1 —— 引言与目录
本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12368107.html 一:引言 众所周知,电脑出现问题了后,重启 可以解决90 ...
- ASP.NET MVC 给Action的参数赋值的方式
Action指的是Controller类中的方法,如上文中的Index. Action参数的三种常见类型:Model类型.普通参数.FormCollection Model类型 我们可以直接在地址栏后 ...
- Accept Xcode/iOS License to run git
在没有安装Xcode的情况下, 使用了 webstorm 的git,提示 安装xcode,安装完成后,并没有打开xcode,而是再次使用git,发现 提示 输入以下命令行: sudo xcodebui ...
- Java后端知识体系及路线【最新秘籍】
第一层(基本语法) 第一层心法,主要都是基本语法,程序设计入门,悟性高者十天半月可成,差一点的 3 到 6 个月也说不准.如果有其他开发语言的功底相助,并且有张无忌的悟性与运气,相信第一层只在片刻 ...
- Linux C/C++ 字符串逆序
/*字符串逆序*/ #include <stdio.h> #include <string.h> void nixu(char *str) { ; char tmp; for( ...
- VJ数论专题AC代码临时保存
//A #include<bits/stdc++.h> using namespace std; bool vis[1000010]; void Get_Prime() { int n = ...