linux聊天python_Python socket C/S结构的聊天室应用
Python开发一个socket的C/S结构的聊天室应用
服务端:
#!/usr/bin/env python
#coding:utf8
import socket,select
def broadcast_data (sock,message):
for socket in conn_list:
if socket != server_socket and socket != sock :
try :
socket.send(message)
except :
socket.close()
conn_list.remove(socket)
if __name__ == "__main__":
conn_list = []
recv_buffer = 4096
PORT = 9999
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #端口重用,可选
server_socket.bind(('', PORT))
server_socket.listen(99)
conn_list.append(server_socket)
print "Chat server started on port " + str(PORT)
while 1:
read_sockets,write_sockets,error_sockets = select.select(conn_list,[],[])
for sock in read_sockets:
#新建连接
if sock == server_socket:
sockfd, addr = server_socket.accept()
conn_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" + ' ' + data)
except:
broadcast_data(sock, "Client (%s, %s) is offline" % addr)
print "Client (%s, %s) is offline" % addr
sock.close()
conn_list.remove(sock)
continue
server_socket.close()
客户端:
#!/usr/bin/env python
#coding:utf8
import socket,select,string,sys
def prompt() :
sys.stdout.write(' ')
sys.stdout.flush()
if __name__ == "__main__":
if(len(sys.argv) < 3) :
print 'Usage : python chat_client.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 1:
socket_list = [sys.stdin, s]
read_sockets, write_sockets, error_sockets = select.select(socket_list , [], [])
for sock in read_sockets:
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()
linux聊天python_Python socket C/S结构的聊天室应用相关推荐
- Linux 网络编程——socket 网络编程
文章目录 一.网络基础 TCP/UDP对比 TCP/IP协议族体系 socket IP地址 IP地址转化API inet_addr() inet_aton() inet_ntoa() inet_pto ...
- linux C语言 socket编程教程(附两个例子)(socket教程)
文章目录 1.网络中进程之间如何通信? 2.什么是Socket? 3.socket的基本操作 3.1.socket()函数 3.2.bind()函数 网络字节序与主机字节序 3.3.listen(). ...
- Linux下的socket演示程序
和C语言教程一样,我们从一个简单的"Hello World!"程序切入 socket 编程. 本节演示了 Linux 下的代码,server.cpp 是服务器端代码,client. ...
- Linux中网络通信中 使用的结构体
"+++++++++++++++++++++++++ Linux TCP/UDP通信中的结构体 +++++++++++++++++++++++++++++++++++++++" s ...
- 简单java socket_基于Java Socket实现一个简易在线聊天功能(一)
最近做了一个项目,其中有一个在线网页交流的需求,好久没写代码了,手都生疏了,于是先写demo练练手,分享到脚本之家平台,以此做个记录,方便自己和大家使用. 先给大家说下实现步骤分这样几大步: 1.使用 ...
- java socket实现的简易的聊天工具demo
这是一个使用原生java socket实现的简易的聊天工具demo, 界面使用java swing 界面如下: ---------- 项目目录结构 代码: https://gitee.com/kunl ...
- Linux下的socket编程学习(TCP)
1.什么是socket? socket的英文翻译就是接口,插座的意思,很形象,就相当于将2台电脑用一根线连起来,线的两头插在不同的电脑上,借此实现通讯的功能. 两台电脑通信,实际上是这两台电脑上的某个 ...
- linux下的socket通信
linux下的socket通信 在linux下,无论多么复杂的服务器或客户端程序,无论什么编程语言实现的,其底层都离不开linux内核提供的系统调用(也就十多个函数),其网络通信的基本流程一定如下所述 ...
- Linux平台基于socket的文件传输服务器和客户端
Linux平台基于socket的文件传输服务器和客户端 目录 前言 一.服务器程序结构 二.客户程序结构 三.代码 1.服务器主程序video_serv_fork.c 2.服务器子程序video_tr ...
最新文章
- 五、唱歌不如跳舞(下)
- 强化学习—— 蒙特卡洛树(Monte Carlo Tree Search, MCTS)
- risc系统服务器,精简的高端 解析四大RISC服务器处理器
- 模板的日常~。~。。。(持续更新中...)
- 高性能分布式事物中间件Sharding-Sphere介绍
- 第一个简单的注册页面
- 基于springboot+thymeleaf+mybatis的员工管理系统 —— 登录与注册
- List集合之ArrayList
- 抓包工具之MitmProxy
- 超详细的ENSP安装教程附下载地址
- Ubuntu20.04安装详细图文教程(双系统)
- 手把手教你操作Tableau——真实公司数据分析项目实例(完整详细,小白也能学会)
- 专访梁杰:Swift或将取代Objective-C
- Android 微信支付总结
- 【100%通过率】华为OD机试真题 Python 实现【完美走位】【2022.11 Q4新题】
- 视频教程-数字图像处理实战-算法基础
- [思语]_心上人,我想对你说
- #有关汇编语言的org指令(许多不为人知的故事):
- 编写程序实现以下功能:计算1~n之间的素数并输出
- 人脸识别——基于百度智能云实现