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完成后建立一个线程,单独进行收发。