python2,socket多进程的错误pickle.PicklingError: Can't pickle 源码: #coding:utf-8 import socket import pickle from multiprocessing import Process HTML_ROOT_DIR = "" def handle_client(client_socket): """处理客户端请求""" # 获取客户端请求数据…
如果需要在多进程中使用tcp连接的对象,那么不能再主进程中将这个对象创建好当做参数传给子进程,因为在创建子进程是需要序列化对象,然而socket对象是不能序列化的,会产生一个pickle.PicklingError的错误: 所以创建socket对象可以在子进程中创建,也就是说多个子进程是不能使用同一个socket对象的.…
# 报错信息 PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed # 问题原因 # 根据网上资料就是说: multiprocessing 会对调用的函数进行序列号,而类函数不支持 # 备注: 具体原因待查 # 解决方法 —— 类函数不带返回值 # 1. 在类之外定义调用函数 def run_class_fun(class_name, msg…
参考nodejs官网发送http post请求的方法,实现了一个模拟post提交的功能.实际使用时报socket hang up错误. 后来发现是请求头设置的问题,发送选项中需要加上headers字段信息(这个估计也和对方的服务器有关,对于不完成的post请求头,可能被丢弃了). 完整的代码如下(遇到类型问题的同学可以做个参考): var querystring = require('querystring') , http = require('http'); var data = query…
在使用Delphi中的TClientSocket和TServerSocket进行通信编程时,当使用TClientSocket这方的客户端使用TClientSocket.close断开连接并退出程序时,使用TServerSocket这方的服务端有时会报‘’Asynchronous socket error 10053‘这个错误,查阅了这个错误说明:Software caused connection abort.(因软件原因导致连接终止).这个原因说明很鸡肋,因为你还是无法确定到底是哪个地方出现了…
今天写socket数据相互通信的时候,碰到一个及其蛋疼的错误.单向传输数据的时候server与client是没有问题的,但是两个都有输入输出操作的时候就出现了这个问题 java.net.SocketException: Socket is closed: 下面附代码: Server: StringBuffer result = new StringBuffer(""); int port = 9090; //定义一个ServerSocket监听在端口9090上 ServerSocket…
本来之前用的好好的mysql服务器,突然就报Can't connect to local MySQL server through socket 'xxx.sock'错误了 遇到该问题思路首先是:检查 my.cnf 中 socket 配置的路径及权限. 但是查看完 没发现路劲权限有问题,最后跑去另一台同时配置的服务器上看  发现/data/perconadata有一个/mnt/perconadata/mysql.sock的软连接 于是乎到问题机器上 cd /data/perconadata/ s…
重点:socket共用方法中错误码的定义以及错误码的解析 底层辅助代码 //serhelp.h #ifndef _vxser #define _vxser #ifdef __cplusplus extern "C" { #endif /** * sersocket_init - socket初始化 * @listenfd:文件描述符 * 成功返回0,失败返回错误码 * */ int sersocket_init(int *listenfd); /** * listen_socket -…
客户端未解决Bug:子进程或者父进程退出的时候,我无法做到两个进程都调用clt_socket_Destory()方式释放socket句柄, 但是进程退出后,相应的资源也会释放,有一定影响,但是不大,以后我想到办法再优化.重点:客户端connect服务器方法需要单独分离出来,方便用户自己断线重连. 客户端 //clthelp.h #include <stdio.h> #include "commsocket.h" #ifndef _vxclt #define _vxclt #…
写socket程序有可能会遇见这个问题  其他信息: 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受.  这种情况我的 错误原因:使用了监听的socket执行了接受数据的任务  代码: public void SetSocket() { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); so…
http://blog.csdn.net/tianmohust/article/details/8691644 在Linux中使用非阻塞的socket的情形下. (一)发送时 当客户通过Socket提供的send函数发送大的数据包时,就可能返回一个EAGAIN的错误.该错误产生的原因是由于send 函数中的size变量大小超过了tcp_sendspace的值.tcp_sendspace定义了应用在调用send之前能够在kernel中缓存的数据量.当应用程序在socket中设置了O_NDELAY或…
新装的postgresql在第一次启动时可能会遇到错误,日志中的记录是: could not create listen socket for "localhost" 到/etc/hosts文件中添加一行: 0.0.0.0 localhost 然后尝试再次启动postgresql.…
转自:http://blog.csdn.net/chen495810242/article/details/42029825 winSock的一个bug:当closesocket多次错误使用时会导致问题 这几天想在一个开源的代码上进行修改,以期研发出一个产品出来.       程序原来是单线程网络程序,需要修改为多线程,修改之后,总是出问题,辅助线程中的recv函数总是运行一阵子之后收到长度为-1的数据报,导致程序运行不正确甚至崩溃.        由于是多线程,只好打日志进行调试,发现一个奇怪…
再之前同时安装 python 后 只需把环境变量PATH 里面改为 PATH=C:\Python36-32\Scripts\;C:\Python36-32\;C:\Python27\;C:\Python27\Scripts 然后把python3安装后的文件按照如下修改: C:\Python36-32\Scripts\pip.exe 改为 C:\Python36-32\Scripts\pip3.exe C:\Python36-32\python.exe 改为 C:\Python36-32\pyth…
错误发生在服务端异步收到一个socket连接,之后使用WSAGetLastError()得到的IO错误码是122 这个错误码在系统中的解释是The data area passed to a system call is too small.   就是说前面的某个buffer设置的太小,看一下上一个调用的winapi是acceptEx这个函数:下面是代码(这是错误的) tRtn = lpfnAcceptEx( mListenSocket, tpOverlapEx->mCommSocket, tA…
背景: socket 10053异常:软件主动放弃一个连接,原因是超时或协议错误.如果LR客户端报10053异常,说明LR在执行套接字操作时,发生通信超时.网络中断或其它异常,主动将Socket连接断开.也就是说:10053异常是从LR的角度断开连接的. 场景: 一次connetion后多次send和recive数据,回放脚本,出现 Software caused connection abort. Error code : 10053. 环境: 主要是后台系统:AIX系统 apache服务器+…
查了好久下面这个方法可用: 发现应该是因为python2.x的默认编码是ascii,而代码中可能由utf-8的字符导致,解决方法是设置utf-8. 找到出错的文件,在import后增加下面几行: #!coding=utf-8 import sys if sys.getdefaultencoding() != 'utf-8':     reload(sys)     sys.setdefaultencoding('utf-8')   这些都加上,再运行就不会出现如上的错误.…
转自:http://blog.csdn.net/tianmohust/article/details/8691644 版权声明:本文为博主原创文章,未经博主允许不得转载. 在Linux中使用非阻塞的socket的情形下. (一)发送时 当客户通过Socket提供的send函数发送大的数据包时,就可能返回一个EAGAIN的错误.该错误产生的原因是由于send 函数中的size变量大小超过了tcp_sendspace的值.tcp_sendspace定义了应用在调用send之前能够在kernel中缓存…
上次写<connection reset by peer, socket write error问题排查>已经过去大半年,当时把问题"敷衍"过去了. 但是此后每隔一段时间就会又想起来,baidu.google一番,可能也会再拉周围的人小讨论一下,然后无果而终.淡忘,想起,淡忘,又想起,挥之不去. 这个周末它又在脑海中浮现,这次总算理解了这个问题,答案就在一本买了很久的新书<HTTP权威指南>中.如果懒得看下面的啰嗦,可以去直接看书中的<4.7.4 正常关闭…
EINTR 表示某种阻塞的操作,被接收到的信号中断,造成的一种错误返回值. EAGAIN   从字面上来看,是提示再试一次.这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候.例如,以 O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读.此时程序不会阻塞起来等待数据准备就绪返回,read函数会返回一个错误EAGAIN,提示你的应用程序现在没有数据可读请稍后再试.…
在使用select管理服务器连接的时候: 注意1:select是可中断睡眠函数,需要屏蔽信号 注意2:必须获取select的返回值nread,每次处理完一个事件,nread需要-1 注意3:如果客户端的连接超过连接池的大小,需要关闭客户端连接 注意4:获取最大套接字的方法是每次有客户端连接过来时,在和maxfd比较,这样就不用每次select之前都遍历池,查找最大值 服务器 //serhelp.h #ifndef _vxser #define _vxser #ifdef __cplusplus…
多进程传递 参数时,需要是python系统已知的,不然不知道怎么序列化…
这几天想在一个开源的代码上进行修改,以期研发出一个产品出来.       程序原来是单线程网络程序,需要修改为多线程,修改之后,总是出问题,辅助线程中的recv函数总是运行一阵子之后收到长度为-1的数据报,导致程序运行不正确甚至崩溃.        由于是多线程,只好打日志进行调试,发现一个奇怪的问题.在A线程与B线程中,均使用了socket这个函数来产生socket,竟然会产生两个相同返回值的socket!也就是说,A线程与B线程能同时获得socket值为360的socket,这样当A正在使用…
# 对于服务器自己本身,一个程序只能绑定一个端口 # 同一个端口可以多个客户端来连接, # 只要server_ip+ server_port +client_ip + cilent_port 不一样,就是唯一 客户端我这里只写一个,基本大同小异,下面的都是服务端的 client: import socket sk = socket.socket() sk.connect(('127.0.0.1',9000)) while True: print(sk.recv(1024)) sk.send(b'…
进程,线程  IO复用,协程都是处理完成并发的方式 socket分为  三步 服务器监听,客户端请求,连接确认, 每次连接都由当前进程来处理,可以通过IO复用来解决这个问题, 这次通过进程来完成并发请求,但是这种方式开销大,消耗较多,频繁的创建和销毁也是耗时 线程并发  IO复用 等下次在贴代码 进程并发代码 服务端代码 <?php $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or die("error:".socke…
首先:set STATICBUILD=true && pip install lxml 安装环境: windows7操作系统,已经正确安装python,pip. 使用pip功能安装Scrapy模块,当输入命令后出现: ERROR: command "python setup.py egg_info" failed with error code 1 in ... 但是测试了pip安装其他模块是正常的. 按照:http://scrapy-chs.readthedocs.i…
严重: Socket accept failed java.net.SocketException: select failed at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.n…
在阿里云上测试过,可以直接使用. 用IP和端口发送数据,会返回echo:+接收到的数据 #coding=utf-8 import socket import threading,getopt,sys,string list=50 port=8001 opts, args = getopt.getopt(sys.argv[1:], "hp:l:",["help","port=","list="]) #设置默认的最大连接数和端口号…
# -*- coding:utf-8 -*- from SocketServer import TCPServer, StreamRequestHandler import traceback class MyStreamRequestHandlerr(StreamRequestHandler): """ #继承StreamRequestHandler,并重写handle方法 #(StreamRequestHandler继承自BaseRequestHandler) "…
#coding=utf-8 import socket import threading,getopt,sys,string opts, args = getopt.getopt(sys.argv[1:], "hp:l:",["help","port=","list="]) #设置默认的最大连接数和端口号,在没有使用命令传入参数的时候将使用默认的值 list=50 port=8001 def usage(): print &q…