同時是Server又是Client

u010861420 2013-11-12 04:40:38
我需要做可以300個程式連結
每一個程式都是獨立的Server又是Client
都可以互相傳送資料

我現在只可以做到一個Server可以接收300個Client
也可以互傳
但我想不到同以上問題要怎麼做
還有可以請教一下未甚麼我sendall為甚麼沒有同時傳送到每個Client??

Server
import socket, sys 
from thread import *

def threadWork(client):
while True:
msg = client.recv(1024)
if not msg:
pass
else:
print "Client send: " + msg
client.sendall(msg + "\r\n")
client.close()

try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(1)

sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', 12000))
sock.listen(300)

while True:
(csock, adr) = sock.accept()
print "Client Info: ", csock, adr
start_new_thread(threadWork, (csock,))

sock.close()


Client
#!/usr/bin/env python

import socket
from thread import *
import time
import sys


server= '127.0.0.1'
port = 12000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)


try:
s.connect((server,port))
except socket.error as msg:
print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
sys.exit()


def thsend(server):
while 1:
text=raw_input("Send:\n")
s.sendall(text)
def threcv(server):
while True:
msg = s.recv(1024)
if not msg:
pass
else:
print "Server send: " + msg


start_new_thread(thsend,(s,))
start_new_thread(threcv,(s,))

...全文
198 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
junlinfushi 2013-11-15
  • 打赏
  • 举报
回复
引用 1 楼 snmr_com 的回复:
你这个实际上是P2P 同一个程序内建一个socket做server监听(连接时产生相应的connect),299个socket做client 因此需要一张节点表,记录每个server的ip信息 同时发送到所有的client要用广播,不然就是遍历逐个传送
进来涨知识
ImN1 2013-11-13
  • 打赏
  • 举报
回复
bt就是同时server+client
ImN1 2013-11-13
  • 打赏
  • 举报
回复
bittorrent
u010861420 2013-11-13
  • 打赏
  • 举报
回复
那個是甚麼??
u010861420 2013-11-12
  • 打赏
  • 举报
回复
每一個程式都是獨立的Server又是Client 都可以互相傳送資料 那這個可能做的出來嗎
ImN1 2013-11-12
  • 打赏
  • 举报
回复
你这个实际上是P2P 同一个程序内建一个socket做server监听(连接时产生相应的connect),299个socket做client 因此需要一张节点表,记录每个server的ip信息 同时发送到所有的client要用广播,不然就是遍历逐个传送

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧