新手求教,利用socket实现聊天的小问题,代码如下。这样只能实现”你一句我一句“的聊天,怎么样才能让某一方可以发送两天甚至更多信息?(另关于线程我不是很会弄)先谢过了。

2012-06-18 15:22:28 +08:00
 xiangpeng
服务器代码
# -*- coding: gb2312 -*-
import socket,time,threading

class server():
#socket初始建立连接 监听 等待客户端连接
s=socket.socket()
host=socket.gethostname()
port=3432
buf=1024
s.bind((host,port))
s.listen(5)
c,addr=s.accept()
#数据发送函数,通过此函数将用户输入的数据
#发送到客户端,并且加入时间后输出到自己屏幕上
def sendMage(self):
message=raw_input("")
thetime=time.strftime('%H:%M:%S',time.localtime(time.time()))
print(thetime)
print("You Said:")
print(message)
self.c.send(message)
#数据接收函数,用于接收用户发送过来的数据
#并且加入时间后显示
def recvMage(self):
self.getMage=self.c.recv(self.buf)
thetime=time.strftime('%H:%M:%S',time.localtime(time.time()))
print(thetime)
print("Your Frind Said:")
print(self.getMage)
while True:
newserver=server()
newserver.recvMage()
newserver.sendMage()
客户端代码
# -*- coding: gb2312 -*-
import socket,time,threading

class client():
#初始化建立和服务器端的连接
s=socket.socket()
host=socket.gethostname()
port=3432
buf=1024
s.connect((host,port))
#数据接收函数,接收服务器发送的数据
#加入时间后输出到屏幕
def recvMage(self):
self.getMage=self.s.recv(self.buf)
thetime=time.strftime('%H:%M:%S',time.localtime(time.time()))
print("Your Friend Said:")
print(self.getMage)
#数据发送函数,用于发送用户输入的数据,
#并且加入时间后显示到自己的屏幕上
def sendMage(self):
message=raw_input("")
thetime=time.strftime('%H:%M:%S',time.localtime(time.time()))
print(thetime)
print("You Said:")
print(message)
self.s.send(message)
while True:
newclient=client()
newclient.sendMage()
newclient.recvMage()
3472 次点击
所在节点    Python
4 条回复
bhuztez
2012-06-18 15:29:05 +08:00
select
xiangpeng
2012-06-18 15:56:27 +08:00
@bhuztez 能说清楚点吗?我不是很懂,谢谢。
DeeCheung
2012-06-18 16:09:11 +08:00
试试 zeromq 吧 示例也不少。
dreasky
2012-06-18 16:36:12 +08:00
异步socket
关键词:
select
WSAAsyncSelect
WSAEventSelect

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/39826

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX