草庐IT

m_socket

全部标签

java - 自定义 XML 消息上带有 Java Socket 服务器的 WCF TCP 客户端

我正在尝试为Java套接字服务器构建一个WCF客户端,该客户端使用自定义XML消息进行对话。我已经使用MessageEncoder和netTCP传输创建了自己的自定义绑定(bind)。现在我看到的是在第一次调用服务器时,服务器接受连接。然而,服务器然后等待特定的XML数据包。这是从客户端内置到方法接口(interface)中的。WCF不发送XML数据包。随后WCF报告超时异常,channel出现故障。WCFnetTCP传输是否只能与WCFTCP服务器一起使用?代码:[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Servi

sockets - PHP 套接字中的 TCP 重试

我有一个套接字服务器监听端口5001上的连接,当连接被接受并收到数据时,我请求我的数据库以特定格式创建数据包并将其写回客户端。为了使数据传输更可靠,我必须在PHP中实现TCP重试,我该怎么做我当前的实现使用一个线程类来触发一个线程来检查并查看是否已收到该数据包的确认,直到timeoutelse它退出3次直到超时,但没有成功。有没有更好的方法来实现它。 最佳答案 TomakethedatatransmissionmorereliableihavetoimplementaTCPretryinPHP不,你不知道。TCP已经是可靠的并且它已

c++ - 如何使用 boost ASIO 在同一个 socket 上创建多个聊天室? (C++)

所以有很棒的chatserverexample,但是如何使用boostasio在同一个聊天服务器上创建多个房间? 最佳答案 无法使用此示例创建多个聊天室。这是一个网络编程示例,而不是聊天服务器。示例聊天服务器在套接字上运行,没有任何关于虚拟聊天室的逻辑。一个聊天绑定(bind)到一个套接字,该套接字对于聊天服务器的其他实例是阻塞的。如果您真的想使用这个聊天服务器示例操作多个聊天室,您可以将聊天服务器的各个实例绑定(bind)到其他端口。另一种方法是使用select命令或其他多路复用命令在同一套接字上多路复用连接。

sockets - erlang 发送套接字西里尔字符数据

我正在尝试从用Erlang编写的服务器发送数据:gen_tcp:send(Socket,"Serverconnectionrefused\r\n").没关系。但是当我尝试发送带有非拉丁符号的数据时,e。G。西里尔字母,我看到了错误报告。例如,如果我使用:gen_tcp:send(Socket,"Привет\r\n").我看到的不是字符串,而是错误报告。我如何通过Erlang的TCP套接字发送包含非拉丁字符的字符串? 最佳答案 试试这个:8>unicode:characters_to_binary("пириуэтда").>9>

sockets - 是否可以劫持远程主机上的 TCP 连接?

例如,假设PersonA连接到Server并且已经启动了TCP连接。所有数据包均未加密。假设PersonA的IP地址为99.99.99.1另一个用户PersonB是否有可能连接到同一个Server并发送一个数据包,以便Server认为它来了来自A?我知道TCP欺骗PersonB可以使用TCP欺骗来实现这一点吗?'欺骗'目的IP并猜测目的端口(目的端口常用的端口只有5000左右,60000到2^16-1)如果B拥有A的IP地址,他们是否只需猜测远程端口即可实现此目的?还是TCP数据包中有其他字段阻止了这一点?例如,发送5000个数据包,每个数据包都带有欺骗性IP和从60000到2^16-

sockets - 做socket编程时accept函数一定要加锁吗?

所有worker都继承了父服务器的套接字描述符,并用它来接受客户端请求。子进程作为自治进程“并行”运行,并使用带有服务器套接字描述符的接受函数。接受客户端请求时,我是否必须为接受功能使用锁定和解锁机制,或者操作系统为我做这件事?这里的想法是多个进程使用公共(public)服务器套接字描述符来接受客户端请求。我是否必须使用互斥机制来屏蔽它以避免竞争条件或死锁?请注意我在accept函数中使用了非阻塞I/O。我有以下代码:for(;;){intclient=accept(...);if(client我应该使用类似的东西吗:for(;;){lock();intclient=accept(..

c++ - 在我的代码中出现这个 "10038 wsa socket"错误

我目前正在尝试实现一个类来创建和使用TCP连接。(我是c++的新手,所以我可能忘记了一些明显的东西,尽管我一直在认真检查我的代码)请注意,稍后我将实现第二个类来处理新连接,因此代码的某些部分不完整/安排不当,我希望这不会打扰您理解它。这是我的问题:服务器和客户端似乎都工作正常(我一直在检查我的监听、绑定(bind)、连接功能:没有错误)而且我显然能够与客户端发送数据,但是当我尝试读取它时从服务器,我收到WSA错误10038(这意味着我正在无效套接字上执行recv())。我已经查了几天了,似乎找不到我的错误。除了代码中的测试之外,我还使用了“netstat-an-ptcp”来检查连接状态

.net - Socket.SendAsync 未检测到无效的 TCP 连接

我遇到Socket.SendAsync方法未检测到死TCP连接的问题。在我的客户端/服务器应用程序中,服务器定期向连接的客户端发送心跳。我遇到的问题是,即使客户端可能已死,来自SendAsync方法的回调指示“SocketError.Success”并且Socket.Connected属性为真,即使客户端不再“活着””。因此,对于服务器来说,心跳数据似乎已正确发送并且客户端仍然存在。我每次都看到这个问题,客户端PC要么进入休眠/休眠状态,要么例如当客户端在VMWare实例中运行并且该实例被挂起时。当客户端关闭应用程序、从任务管理器中将其终止等时,我没有看到此问题。internalvoi

sockets - Erlang gen_tcp :recv(Socket, 长度)语义

看完thisanswer,我想了解是否同样适用于对gen_tcp:recv(Socket,Length)的调用。我对文档的理解是,如果缓冲区中有超过Length个字节可用,它们将保留在那里;如果少于Length字节,调用将阻塞,直到有足够的可用字节或连接关闭。特别是,当数据包以2个字节为前缀以小端顺序保存数据包长度时,这应该有效:receive_packet(Socket)->{ok,>}=gen_tcp:recv(Socket,2),gen_tcp:recv(Socket,Length).这是正确的吗? 最佳答案 是(或否,详见评

sockets - TCP套接字传输

前一段时间我有一个问题,为什么当我发送1024个八位字节时我的套接字有时只收到653个八位字节(例如),感谢Rakis,我明白了:操作系统允许以任意大小的block接收。这次我需要确认:)在任何操作系统上(至少是GNU/Linux和Windows),在任何语言中(我在这里使用Python),如果我发送一个随机字节数的数据包,可以是2个字节,可以是12000个字节,比方说X,当我写socket.send(X)时,我是否绝对保证在我做另一个套接字之前,X将在套接字的另一端被完全接收(不管接收操作系统将其分成任何block)。发送(任何字符串)?或者换句话说,如果我有代码:socket.se