A. python socket send是由server還是client
server和client都能send。
client send 數據 給 server。
server recv 來至client 的 send 數據。
server 處理後再 send 數據給client。
client再recv 來至server 的 send 。
B. python socket發送總出錯,不知道什麼原因,希望大神解答
錯誤提示發過來看看。從代碼上看socket那一段。沒有問題。最多有些小問題。但是發送應該是可以的。如果不放心可以
client.send(str(data))再試試看。
不過通常這個操作是非同步的。點擊send後,啟動一個線程,由線程發送接收,線程將自己狀態放在全局變數的數組里。
程序可以通過刷新顯示全局變數里的狀態,以揭示線程的工作進度。
C. python怎樣建立socket伺服器
下面的例子是多線程實現的socket伺服器:
import socketimport threadingclass ThreadedServer(object):
def __init__(self, host, port):
self.host = host
self.port = port
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.sock.bind((self.host, self.port))
def listen(self):
self.sock.listen(5)
while True:
client, address = self.sock.accept()
client.settimeout(60)
threading.Thread(target = self.listenToClient,args = (client,address)).start()
def listenToClient(self, client, address):
size = 1024
while True:
try:
data = client.recv(size)
if data:
# Set the response to echo back the recieved data
response = data
client.send(response)
else:
raise error('Client disconnected')
except:
client.close()
return Falseif __name__ == "__main__":
while True:
port_num = input("Port? ")
try:
port_num = int(port_num)
break
except ValueError:
pass
ThreadedServer('',port_num).listen()
D. 用java socket編寫的server端,用python編寫的client,數據怎麼傳輸,最好給個具體的例子,謝謝!
python不熟悉,不過我寫過C和java通信的例子,socket通信,統一用byte處理,你只要考慮發送和接收時編碼格式一致,別亂碼就好了
E. python菜鳥問題
client.connect(("localhost",6969))
提示告訴你,connect方法不能接收元組對象作為參數,("localhost",6969)這樣是一個元組
修改為
client.connect("localhost",6969)
F. python 網路編程 怎麼實現自寫的server和client交互
一個簡單的CS通信的例子(只實現功能,沒有考慮異常處理、斷開連接等問題):
#server.py
importsocket,threading
defsend(socket):
whileTrue:
sendmsg=input()
socket.send(sendmsg.encode())
defreceive(socket,addr):
whileTrue:
b=socket.recv(1024)
msg=b.decode()
print('來自客戶端%s:%d的消息:%s'%(addr[0],addr[1],msg))
try:
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.bind(('127.0.0.1',9999))
sk.listen(1)
print('伺服器已啟動,最多允許1個連接')
sk_client,addr=sk.accept()
print(type(addr))
print('來自%s:%d的新連接!說點什麼吧:'%(addr[0],addr[1]))
tsend=threading.Thread(target=send,args=(sk_client,))
trecv=threading.Thread(target=receive,args=(sk_client,addr))
tsend.start()
trecv.start()
tsend.join()
trecv.join()
exceptsocket.errorase:
print('與客戶端的連接出錯:%s'%e)
#client.py
importsocket,threading
defsend(socket):
whileTrue:
sendmsg=input()
socket.send(sendmsg.encode())
defreceive(socket):
whileTrue:
b=socket.recv(1024)
msg=b.decode()
print('來自伺服器的消息:%s'%msg)
try:
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print('嘗試連接伺服器...')
sk.connect(('127.0.0.1',9999))
print('已連接到伺服器。說點什麼吧!')
tsend=threading.Thread(target=send,args=(sk,))
trecv=threading.Thread(target=receive,args=(sk,))
tsend.start()
trecv.start()
tsend.join()
trecv.join()
exceptsocket.errorase:
print('無法連接到伺服器:%s'%e)
G. 為什麼python寫的客戶端向服務端發文件報錯errno:10061錯誤,在linux客戶端上沒有問題,windows有問題。
你好,雖然沒有出錯的log,建議:
print一下中間的結果,看看出錯在哪個地方,就是debug;
用try語句,捕捉錯誤,定位下。
H. python-Socket服務端無限循環接受客戶端,但客戶端一直處於接受服務端信息狀態,無實際信息返回
第一個循環錯了。把第二個循環放在第一個循環裡面。accept完了就收發數據,循環收發。收發完了,關閉了,就回到accept的等待狀態 。
按你現在的邏輯是,accept完成後就一直等待,直到第二次accept
慢慢試驗。建議你accept完成後建立一個線程,單獨進行收發。