标签: sockets

如何在z/OS上的C++中使用C套接字API

我在让C套接字API在C++上正常工作时遇到问题z/OS.

虽然我包括在内sys/socket.h,但我仍然遇到编译时错误,告诉我AF_INET没有定义.

我是否遗漏了一些显而易见的事情,或者这与这样一个事实相关:继续z/OS使我的问题变得更加复杂?


更新:经过进一步调查,我发现有一个#ifdef我正在打击.z/OS除非我定义我使用的哪种"类型"套接字,否则显然不高兴:

#define _OE_SOCKETS
Run Code Online (Sandbox Code Playgroud)

现在,我个人不知道这_OE_SOCKETS实际上是什么,所以如果任何z/OS套接字程序员在那里(你们三个人),或许你可以给我一个如何运作的概述?


测试应用程序

#include <sys/socket.h>

int main()
{
    return AF_INET;
}
Run Code Online (Sandbox Code Playgroud)

编译/链接输出:

cxx -Wc,xplink -Wl,xplink -o inet_test inet.C

"./inet.C", line 5.16: CCN5274 (S) The name lookup for "AF_INET" did not find a declaration.
CCN0797(I) Compilation failed for file ./inet.C. Object file not created.
Run Code Online (Sandbox Code Playgroud)

检查sys/sockets.h确实包含了我需要的定义,据我所知,它没有被任何#ifdef语句阻止.

但我注意到它包含以下内容:

#ifdef __cplusplus
  extern "C" {
#endif
Run Code Online (Sandbox Code Playgroud)

它基本上封装了整个文件.不确定是否重要.

c c++ sockets mainframe zos

146
推荐指数
9
解决办法
1万
查看次数

在localhost上,如何选择一个空闲端口号?

我正在尝试进行进程间通信,因为我无法弄清楚如何在Windows下使用命名管道,我以为我会使用网络套接字.一切都在当地发生.服务器能够在单独的进程中启动从属服务器并侦听某个端口.奴隶完成他们的工作并将结果提交给主人.我如何确定哪个端口可用?我想我不能听80或21端口?

我正在使用Python,如果这会减少选择.

谢谢!

python sockets port ipc

145
推荐指数
4
解决办法
10万
查看次数

如何修复java.net.SocketException:管道坏了?

我正在使用apache commons http客户端使用post方法调用url来发布参数,并且它很少抛出以下错误.

java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)
        at java.io.FilterOutputStream.write(FilterOutputStream.java:80)
        at org.apache.commons.httpclient.methods.ByteArrayRequestEntity.writeRequest(ByteArrayRequestEntity.java:90)
        at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
Run Code Online (Sandbox Code Playgroud)

有人可以建议导致此异常的原因以及如何调试它吗?

java sockets post exception

144
推荐指数
4
解决办法
44万
查看次数

TCP套接字和Web套接字之间的差异,再一次

为了尽可能地了解TCP套接字和websocket之间的差异,我已经在这些问题中找到了很多有用的信息:

等等...

在我的调查中,我在维基百科上看了这句话:

Websocket与TCP的不同之处在于它启用了消息流而不是字节流

我不完全确定它究竟意味着什么.你有什么解释?

sockets tcp websocket

137
推荐指数
2
解决办法
10万
查看次数

是什么导致我的java.net.SocketException:连接重置?

我们java.net.SocketException: Connection reset在日志中看到频繁但间歇性的 错误.我们不确定Connection reset错误实际来自何处,以及如何进行调试.

该问题似乎与我们尝试发送的邮件无关.请注意,消息不是 connection reset by peer.

有关此异常的典型原因可能是什么的建议,以及我们如何进行?

这是一个代表性的堆栈跟踪(com.companyname.mtix.sms是我们的组件):


    java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:168)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
        at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)
        at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
        at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115)
        at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)
        at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
        at com.companyname.mtix.sms.services.impl.message.SendTextMessage.sendTextMessage(SendTextMessage.java:127)
        at com.companyname.mtix.sms.services.MessageServiceImpl.sendTextMessage(MessageServiceImpl.java:125)
        at com.companyname.mtix.sms.services.remote.MessageServiceRemoteImpl.sendTextMessage(MessageServiceRemoteImpl.java:43)
        at sun.reflect.GeneratedMethodAccessor203.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
        at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) …

java sockets socketexception connection-reset

136
推荐指数
7
解决办法
81万
查看次数

127.0.0.1和localhost有什么区别

假设以下内容定义如下.../hosts:

127.0.0.1 localhost
Run Code Online (Sandbox Code Playgroud)

如果有的话,使用127.0.0.1localhost作为服务器名称之间的实际差异是什么,特别是当遇到正在侦听连接的本地运行的进程时?

sockets dns networking localhost

136
推荐指数
4
解决办法
10万
查看次数

iPhone数据使用跟踪/监控

我搜索了这个主题,但发现很少有帮助的细节.有了这些细节,我试着按如下方式编写一些代码.

注意:请将此帖中分享的详细信息与其他帖子进行比较,然后再将其标记为DUPLICATE,而不仅仅是主题.

- (NSArray *)getDataCountersForType:(int)type {
    BOOL success;
    struct ifaddrs *addrs = nil;
    const struct ifaddrs *cursor = nil;
    const struct sockaddr_dl *dlAddr = nil;
    const struct if_data *networkStatisc = nil; 

    int dataSent = 0;
    int dataReceived = 0;

    success = getifaddrs(&addrs) == 0;
    if (success) {
        cursor = addrs;
        while (cursor != NULL) {
            if (cursor->ifa_addr->sa_family == AF_LINK) {
                dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr;
                networkStatisc = (const struct if_data *) cursor->ifa_data;

                if (type == WiFi) {
                    dataSent …
Run Code Online (Sandbox Code Playgroud)

sockets iphone ios

135
推荐指数
4
解决办法
5万
查看次数

远程主机强制关闭现有连接

我正在使用一个商业应用程序,它正在抛出带有消息的SocketException,

远程主机强制关闭现有连接

客户端和服务器之间的套接字连接会发生这种情况 连接仍然存在,并且正在传输大量数据,但它随后就无法断开连接.

有没有人见过这个?原因是什么?我可以猜到一些原因,但是有没有办法在这段代码中添加更多内容以找出原因可能是什么?

欢迎任何意见/想法.

... 最新的 ...

我有一些.NET跟踪记录,

System.Net.Sockets Verbose: 0 : [8188] Socket#30180123::Send() DateTime=2010-04-07T20:49:48.6317500Z

System.Net.Sockets Error: 0 : [8188] Exception in the Socket#30180123::Send - An existing connection was forcibly closed by the remote host DateTime=2010-04-07T20:49:48.6317500Z 

System.Net.Sockets Verbose: 0 : [8188] Exiting Socket#30180123::Send() -> 0#0
Run Code Online (Sandbox Code Playgroud)

根据日志记录的其他部分,我看到它说'0#0'表示正在发送一个0字节长度的数据包.但这究竟意味着什么?

发生两种可能性之一,我不确定,

1)连接正在关闭,但数据随后被写入套接字,从而产生上述异常.0#0只表示没有发送任何内容,因为套接字已经关闭.

2)连接仍然是打开的,并且正在发送一个零字节的数据包(即代码有一个错误),0#0表示正在尝试发送一个零字节的数据包.

你怎么看?我想这可能是不确定的,但也许其他人已经看到过这种事情了?

.net c# sockets networking

130
推荐指数
6
解决办法
36万
查看次数

在套接字库中调用recv时,我的recv缓冲区应该有多大

我对C中的套接字库有几个问题.这是我在问题中引用的一段代码.

char recv_buffer[3000];
recv(socket, recv_buffer, 3000, 0);
Run Code Online (Sandbox Code Playgroud)
  1. 如何确定recv_buffer的大小?我使用3000,但这是任意的.
  2. 如果recv()收到的数据包大于我的缓冲区会怎么样?
  3. 我怎么知道我是否收到了整个消息而没有再次调用recv并且在没有任何东西被接收时让它永远等待?
  4. 有没有办法让缓冲区没有固定的空间,这样我可以继续添加它而不用担心空间不足?也许strcat用于连接recv()缓冲区的最新响应?

我知道这里有很多问题,但我非常感谢任何回复.

c sockets buffer recv

126
推荐指数
4
解决办法
10万
查看次数

socket.emit()与socket.send()

这两者有什么区别?

我注意到,如果我从改变socket.emitsocket.send在一个工作程序,服务器无法接收消息,虽然我不明白为什么.

我还注意到,在我的程序,如果我从改变socket.emitsocket.send,服务器接收到消息,但它似乎多次接受它.当我console.log()用来查看服务器收到的内容时,它会显示与我使用时不同的内容socket.emit.

为什么会这样?你怎么知道何时使用socket.emitsocket.send

sockets node.js socket.io

126
推荐指数
4
解决办法
16万
查看次数