Python 最小聊天服务器&&客户端
来源:互联网 发布:lego ev3 编程 编辑:程序博客网 时间:2024/06/01 14:36
转载自
http://www.binarytides.com/code-chat-application-server-client-sockets-python/
import socket, selectdef broadcast_data(sock, message): for socket in CONNECTION_LIST: if socket != server_socket and socket != sock: try: socket.send(message) except: socket.close() CONNECTION_LIST.remove(socket)if __name__ == "__main__": CONNECTION_LIST = [] RECV_BUFFER = 4096 PORT = 5000 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket.bind(("0.0.0.0", PORT)) server_socket.listen(10) CONNECTION_LIST.append(server_socket) print "Chat server started on port " + str(PORT) while True: read_sockets, write_sockets, error_sockets = select.select(CONNECTION_LIST, [], []) for sock in read_sockets: if sock == server_socket: sockfd, addr = server_socket.accept() CONNECTION_LIST.append(sockfd) print "Client (%s, %s) connected" % addr broadcast_data(sockfd, "[%s:%s] entered room\n" % addr) else: try: data = sock.recv(RECV_BUFFER) if data: broadcast_data(sock, "\r" + '<' + str(sock.getpeername()) + '> ' + data) except: broadcast_data(sock, "Client (%s, %s) is offline" % addr) print "Client (%s, %s) is offline" % addr sock.close() CONNECTION_LIST.remove(sock) continue server_socket.close()
python Server.py
import socket, select, string, sysdef prompt(): sys.stdout.write('<You> ') sys.stdout.flush()if __name__ == "__main__": if len(sys.argv) < 3: print 'Usage : python ChatClient.py hostname port' sys.exit() host = sys.argv[1] port = int(sys.argv[2]) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(2) try: s.connect((host, port)) except: print 'Unable to connect' sys.exit() print 'Connected to remote host. Start sending messages' prompt() while True: rlist = [sys.stdin, s] read_list, write_list, error_list = select.select(rlist, [], []) for sock in read_list: if sock == s: data = sock.recv(4096) if not data: print '\nDisconnected from chat server' sys.exit() else: sys.stdout.write(data) prompt() else: msg = sys.stdin.readline() s.send(msg) prompt()
python EchoClient.py localhost 5000
python EchoClient.py localhost 5000
阅读全文
0 0
- Python 最小聊天服务器&&客户端
- 聊天服务器-客户端
- python聊天服务器实现
- python twisted聊天服务器
- python socket 创建tcp服务器和客户端改进版(实现半双工聊天)
- UDP聊天穿透(服务器+客户端)源码
- c++ 网络编程 socket 聊天客户端/服务器
- Java聊天软件服务器+客户端源码---…
- Java 利用 Socket 实现服务器客户端聊天
- 利用 Socket 实现服务器客户端聊天
- 【Java】NIO 客户端-服务器 聊天 例子
- java多线程服务器,实现客户端间聊天
- 【Python】基于MQTT的聊天客户端
- linux服务器-客户端的最小模型
- 聊天客户端
- 聊天 客户端
- C#下如何实现服务器+客户端的聊天程序
- C#下如何实现服务器+客户端的聊天程序
- 如何打开pr_debug调试信息
- 1053. 住房空置率 (20)
- fork()和多线程
- 正则表达式复习--正则语法
- python重载和多态问题
- Python 最小聊天服务器&&客户端
- fgm实例练习笔记-1.2网页换肤
- 生产者/消费者问题的多种Java实现方式
- openstack compute service问题
- QT上的toStdString()在VS2013下出现式子无法计算取0情况
- 如何建立标准的maven web 工程
- spring 发送邮件
- 正则表达式--基础语法总结
- 【新】CentOS7部署Kubernetes集群