python怎样建立socket服务器
下面的例子是多线程实现的socket服务器: import socketimport threadingclass ThreadedServer(object):def __init__(self, host, port):self.host = hostself.port = portself.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 = 1024while True:try:data = client.recv(size)if data:# Set the response to echo back the recieved dataresponse = dataclient.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)breakexcept ValueError:pass ThreadedServer('',port_num).listen()

python中使用socket编程,如何能够通过UDP传递一个列表类型的数据?
Python中的 list 或者 dict 都可以转成JSON字符串来发送,接收后再转回来。首先import json然后,把 list 或 dict 转成 JSONjson_string = json.dumps(list_or_dict)如果你用的是Python3,这里的 json_string 会是 str 类型(即Python2的unicode类型),可能需要编码一下:if type(json_string) == six.text_type:json_string = json_string.encode('UTF-8')用socket发送过去,例如s.sendto(json_string, address)对方用socket接收,例如json_string, addr = s.recvfrom(2048)把JSON转成 list 或 dictlist_or_dict = json.loads(json_string)下面是个完整的例子:client.py#!/usr/bin/env python# -*- coding: UTF-8 -*- import socketimport jsonimport six address = ('127.0.0.1', 31500)s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]json_string = json.dumps(mylist)if type(json_string) == six.text_type: json_string = json_string.encode('UTF-8')s.sendto(json_string, address)s.close()server.py#!/usr/bin/env python# -*- coding: UTF-8 -*- import socketimport json address = ('127.0.0.1', 31500)s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.bind(address)json_string, addr = s.recvfrom(2048)mylist = json.loads(json_string)print(mylist)s.close()请先运行server.py,再运行client.py
UDP不适合传输很大的数据包。

如何增加Python打开的socket数目
首先服务端这边的实现如下: import socket, tracebackhost = '' # Bind to all interfacesport = 51500# Step1: 创建socket对象s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# Step2: 设置socket选项(可选)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# Step3: 绑定到某一个端口s.bind((host, port))# Step4: 监听该端口上的连接while 1:try:message, address = s.recvfrom(8192)print "Got data from ", addresss.sendto("Data is received succeefully.", address)except (KeyboardInterrupt, SystemExit):print "raise"raiseexcept :print "traceback"traceback.print_exc()其中,host置为空,意思是可以绑定到所有的接口和地址,无论是哪个客户端的请求,只要是绑定到了同样的端口,那么服务器就可以监听到这个请求。在tcp连接中,监听客户端的请求需要用到listen或accept函数,并有一个专门的socket和远程极其连接。接着使我们的客户端实现:import socket, sys# Step1: 输入host和port信息host = raw_input('please input host name: ')textport = raw_input('please input textport: ')# Step2: 创建socket对象s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)try:port = int(textport)except ValueError:port = socket.getservbyname(textport, 'udp')# Step3: 打开socket连接s.connect((host, port))# Step4: 发送数据print "Enter data to transmit: "data = sys.stdin.readline().strip()s.sendall(data)# Step5: 接收服务器发过来的数据print "Looking for replies; press Ctrl-C or Ctrl-Break to stop"while 1:buf = s.recv(2048)if not len(buf):breaksys.stdout.write(buf) 这个例子就是这么简单,实现起来和C语言版的差不多。看来,只要是了解socket编程的,用不同的语言实现也会相差无几。

菜鸟求教一个关于python socket的问题
情况时这样,最近刚学python,一直使用的文本编辑,在学到socket时自己尝试写了一个小脚本,部分语句如下: import socketself.service=socket.socket(socket.AF_INET,socket.SOCK_STREAM)python 运行无错最近又发现,原来eclipse是有python扩展包的,于是尝试把自己写的东西放到eclipse中运行,然后就报错了:self.service=socket.socket(socket.AF_INET,socket.SOCK_STREAM)AttributeError: 'module' object has no attribute 'AF_INET'ctrl+左键放到AF_INET提示此值存放在_socket下,于是有以下尝试:import socketimport _socketprint _socket.AF_INET #无报错,返回2print socket.AF_INET #报错于是修改了脚本import _socket as socket我的脚本运行正常首先,我系统的环境使用的时python2.6,eclipse中,windows-》preferences-》interpreter - python这里面的lib包(指向/usr/bin/python2.6),与我在终端的输出sys.path输出的值时一样的然后,我的问题:1,是不是在python中有两个模块,一个叫socket,一个叫_socket?2,为什么在终端执行,可以直接import socket.AF_INET,而在eclipse中则需要import _socket?可能你的测试脚本或当前路进下有其他脚本也叫socket,优先被载入造成错误,试试import后立刻打印路径看看是不是标准的那个...>>> import socket>>> print socket.__file__C:Python27libsocket.pyc >>>

python socket如何连接到华为云服务器
这篇文章主要介绍了python使用socket连接远程服务器的方法,涉及Python中socket通信的基本技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了python使用socket连接远程服务器的方法。分享给大家供大家参考。具体如下:import socketprint "Creating socket...",s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)print "done."print "Looking up port number...",port = socket.getservbyname('http', 'tcp')print "done."print "Connecting to remote host on port %d..." % port,s.connect(("www.jb51.net", port)) print "done."

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/44131.html。