草庐IT

m_Socket

全部标签

c++ - Socket select() 第二次阻塞

我正在开发一个简单的服务器/客户端程序。我正在使用select()等待数据在读取数据之前进入TCP套接字。当数据进入时,我使用几个recv()和select()调用以读入block,直到我拥有所有内容。然后我循环回到最初的select()调用,看看客户端是否还有其他要发送的内容。structtimevaltimeoutCounter;fd_setreadFileDescriptor;do{timeoutCounter.tv_sec=30;timeoutCounter.tv_usec=0;FD_ZERO(&readFileDescriptor);FD_SET(socket,&readFi

java - socket.setReceiveBufferSize()的使用

我对java.net中Socket的setReceiveBufferSize()的使用感到困惑。从API中,我知道设置套接字的接收缓冲区大小定义(或提示)套接字一次可以接收的数据限制。然而,每次我尝试从套接字的输入流中读取时,我发现它可以存储比我用setReceiveBufferSize()设置的更多的数据。考虑以下代码:InputStreaminput_stream=socket.getInputStream();socket.setReceiveBufferSize(1024);byte[]byte_array=newbyte[4096];input_stream.read(byt

python - 错误号 98 : Address already in use - Python Socket

以前有人问过这个问题,但没有一个答案对我有帮助。问题看起来很简单。我在树莓派上运行一个TCP服务器,并尝试从另一台机器连接到它。我有一个自定义类接收器,可将传感器数据通过管道传输到此脚本。当我关闭在另一台机器上运行的程序时(套接字是'shutdown(2)'d,然后是'close()'d),我无法再重新连接到同一个端口。我尝试在两个socket(1180和1181)之间切换,但这没有用。当我通过一个端口连接一次时,它就永远消失了,直到我重新启动TCP服务器。我尝试重新启动脚本(使用executl()),但这并没有解决我的问题。我告诉套接字它应该重新使用地址但无济于事。我能做的是使用更多

python - 在 python 套接字中为 socket.connect() 指定源 IP 地址

当我们在具有多个以太网接口(interface)的机器上执行__socket.connect((host,port))时,我们如何设置源IP地址? 最佳答案 在使用connect()之前,使用socket.bind((ipaddr,port))确定源地址和源端口。如果addr或port等于''或0,则表示使用操作系统默认值。 关于python-在python套接字中为socket.connect()指定源IP地址,我们在StackOverflow上找到一个类似的问题:

c# - 如何从 .NET Core 中的 Socket 接收数据?

我目前正在将硬件库移植到.NETCore。通信通过TCP进行。我对“Socket.BeginReceive”方法有疑问。MSDN.NETCore中似乎没有等效的方法。如何从TCP套接字接收数据?privatevoidInternalDataReceived(IAsyncResultar){intdataCount=0;byte[]buffer;try{if(_client!=null&&_client.Client!=null){dataCount=_client.Client.EndReceive(ar);}if(dataCount>0){try{buffer=newbyte[dat

c# - 是什么导致了 MSSQL 中的错误 "Operation on non-blocking socket would block"?

错误:异常查询是“CREATENONCLUSTEREDINDEX[I1]ONAllAccounts_BAK([Master_received_Day]ASC)'withexception发生了一个或多个错误。错误:异常内部异常无法从传输连接读取数据:非阻塞套接字上的操作将阻塞。这是执行此查询的C#代码:privatevoidExecuteQuery(stringqStr){using(SqlConnectioncnx=newSqlConnection(_ConnectionString)){using(SqlCommandcmd=newSqlCommand(qStr,cnx)){cmd

c - 当通过 Socket 发送数据时,send/write 何时返回 -1?

Linux。TCP套接字。send()/write()命令何时会失败?是否只有内核中的TCP发送缓冲区溢出才返回-1? 最佳答案 来自OpenGroupwrite()的定义:Uponsuccessfulcompletion,write()[XSI]andpwrite()shallreturnthenumberofbytesactuallywrittentothefileassociatedwithfildes.Thisnumbershallneverbegreaterthannbyte.Otherwise,-1shallberetu

c++ - 使用read函数从socket中读取数据

我正在尝试使用以下代码从套接字读取数据:n=read(fd,buffer,50000);问题是:当来自web服务器的数据大于tcp包大小时,这些数据会被拆分成多个包。在这种情况下,read函数是只从fd中读取一个数据包,还是从fd中读取所有数据包?请注意,read函数只被调用一次。 最佳答案 因为您使用的是TCP,所以您的套接字类型为SOCK_STREAM。SOCK_STREAM套接字是字节流,不维护数据包边界,因此调用read()或recv()将读取数据如果已收到多个数据包并且缓冲区中有足够的空间,则来自多个数据包。如果您的缓冲区

java - 软件导致连接中止 : socket write error

我有一个案例,客户端在与服务器建立连接后,收到一个文件,当使用相同的连接(持久)时,我最终得到了上面提到的这个错误。下面是实现的代码:Scannerin=newScanner(file);this.clientSocket=newSocket(this.host,this.port);this.os=newDataOutputStream(this.clientSocket.getOutputStream());this.is=this.clientSocket.getInputStream();while(in.hasNextLine()){newFile=in.nextLine()

ruby 套接字 : Error (EINVAL) while trying to bind a sending socket to a port

当我尝试从blue.example.edu连接到green.example时,connect方法无法给出EINVAL.edu当我从blue连接到blue本身时,我没有收到此错误。rubydocumentation在connect下建议Errno::EINVAL-theaddresslengthusedforthesockaddrisnotavalidlengthfortheaddressfamilyorthereisaninvalidfamilyinsockaddr但是当我尝试将blue连接到其自身的另一个端口时,由于相同的参数工作正常,这可能是错误的?这是代码片段:MY_NAME=S