首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

server client解决办法

2013-11-12 
server client我想要做客戶端後傳訊息我想要多客戶我開兩個Client沒辦法Server一次只能接收和傳送一邊的資

server client
我想要做客戶端後傳訊息
我想要多客戶
我開兩個Client沒辦法
Server一次只能接收和傳送一邊的資料

可能是因為我的傳送和接收不能同時進行
是缺什麼??

#!/usr/bin/env python
# -*- coding: cp950 -*-

import socket
server= ''
port = 12000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((server,port))
s.listen(300)

a=0

while True:
    client,addr=s.accept()
    print('IP:',addr)
    if a==0:data =client.recv(1024)
    print("client say:",repr(data))
    a=1
    if a==1:text=raw_input("key number:")
    client.send(text) 
    a=0




#!/usr/bin/env python
# -*- coding: cp950 -*-

import socket
server= '127.0.0.1'
port = 12000

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect((server,port))
a=1

while True:
    if a==1:text=raw_input("key number:")
    s.send(text) 
    a=0
    if a==0:data=s.recv(1024)
    print("server say:",repr(data))
    a=1 

[解决办法]
你主要问题是没注意accept,recv,send都是阻塞式调用,服务器卡在一个点上没法同时响应多个客户端,后面虽然改为多线程,但客户端的连接却晾在一边,基本上都乱套了。试试上述手册里第一个例子当服务器,你顶楼第一次自己写的客户端,起几个去连接,应该没问题,然后研究源码(Pythonxx/Lib/SocketServer.py),看人家怎么写的...

热点排行