标签: sockets

端口和套接字有什么区别?

这是我组织中的一位软件工程师提出的问题.我对最广泛的定义感兴趣.

sockets port networking

880
推荐指数
23
解决办法
41万
查看次数

套接字选项SO_REUSEADDR和SO_REUSEPORT,它们有何不同?它们在所有主要操作系统中的含义是否相同?

man pages和程序员单证套接字选项SO_REUSEADDR,并SO_REUSEPORT针对不同的操作系统,不同的,往往非常混乱.有些操作系统甚至没有选项SO_REUSEPORT.WEB中充满了关于此主题的矛盾信息,并且通常您可以找到仅对特定操作系统的一个套接字实现的信息,这些信息甚至可能在文本中没有明确提及.

那究竟有什么SO_REUSEADDR不同SO_REUSEPORT呢?

系统是否没有SO_REUSEPORT更多限制?

如果我在不同的操作系统上使用任何一个,那么预期的行为究竟是什么?

unix sockets linux windows portability

630
推荐指数
2
解决办法
24万
查看次数

"同伴重置连接"是什么意思?

TCP连接上"通过对等连接重置"错误的含义是什么?这是致命错误还是只是通知或与网络故障有关?

sockets tcp

596
推荐指数
2
解决办法
74万
查看次数

TypeError:'module'对象不可调用

File "C:\Users\Administrator\Documents\Mibot\oops\blinkserv.py", line 82, in __init__
    self.serv = socket(AF_INET,SOCK_STREAM)
TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误?我糊涂了.

你需要知道什么来回答我的问题?

python sockets

491
推荐指数
7
解决办法
95万
查看次数

节点上的客户端:未捕获的ReferenceError:未定义require

所以,我正在用node/express + jade combo编写一个应用程序.

我有client.js,在客户端加载.在该文件中,我有从其他JavaScript文件调用函数的代码.我的尝试是使用

var m = require('./messages');
Run Code Online (Sandbox Code Playgroud)

为了加载messages.js(就像我在服务器端一样)的内容,然后加载该文件的调用函数.但是,require没有在客户端定义,它会抛出窗体的错误Uncaught ReferenceError: require is not defined.

这些其他JS文件也在客户端的运行时加载,因为我将链接放在网页的标题上.因此,客户端知道从这些其他文件导出的所有函数.

如何从打开服务器套接字messages.js的主client.js文件中的其他JS文件(例如)中调用这些函数?

javascript sockets node.js express pug

277
推荐指数
5
解决办法
55万
查看次数

使用Java获取当前计算机的IP地址

我正在尝试开发一个系统,其中有不同的节点在不同的系统或同一系统上的不同端口上运行.

现在,所有节点都创建一个Socket,其目标IP作为称为引导节点的特殊节点的IP.然后节点创建自己的节点ServerSocket并开始侦听连接.

引导节点维护一个节点列表,并在被查询时返回它们.

现在我需要的是节点必须将其IP注册到自举节点.我尝试使用cli.getInetAddress()一旦客户端连接到ServerSocketbootstrapping节点,但这不起作用.

  1. 我需要客户端注册其PPP IP(如果可用);
  2. 否则LAN IP如果可用;
  3. 否则它必须注册127.0.0.1,假设它是同一台计算机.

使用代码:

System.out.println(Inet4Address.getLocalHost().getHostAddress());
Run Code Online (Sandbox Code Playgroud)

要么

System.out.println(InetAddress.getLocalHost().getHostAddress());
Run Code Online (Sandbox Code Playgroud)

我的PPP连接IP地址是:117.204.44.192,但上面的返回值为192.168.1.2

编辑

我使用以下代码:

Enumeration e = NetworkInterface.getNetworkInterfaces();
while(e.hasMoreElements())
{
    NetworkInterface n = (NetworkInterface) e.nextElement();
    Enumeration ee = n.getInetAddresses();
    while (ee.hasMoreElements())
    {
        InetAddress i = (InetAddress) ee.nextElement();
        System.out.println(i.getHostAddress());
    }
}
Run Code Online (Sandbox Code Playgroud)

我能够获得所有相关的所有IP地址NetworkInterface,但我如何区分它们?这是我得到的输出:

127.0.0.1
192.168.1.2
192.168.56.1
117.204.44.19
Run Code Online (Sandbox Code Playgroud)

java sockets ip

274
推荐指数
10
解决办法
50万
查看次数

节点js ECONNRESET

我正在运行带有socket.io的Express js应用程序用于聊天webapp,并且我在24小时内随机获得以下错误5次左右.节点进程永远包装,并立即重新启动.

问题是重新启动快速将我的用户踢出他们的房间而没人想要.

Web服务器由HAProxy代理.没有套接字稳定性问题,只使用websockets和flashsockets传输.我无法故意重现这一点.

这是节点v0.10.11的错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: read ECONNRESET     //alternatively it s a 'write'
    at errnoException (net.js:900:11)
    at TCP.onread (net.js:555:19)
error: Forever detected script exited with code: 8
error: Forever restarting script for 2 time
Run Code Online (Sandbox Code Playgroud)

编辑(2013-07-22)

添加了socket.io客户端错误处理程序和未捕获的异常处理程序.似乎这个捕获了错误:

process.on('uncaughtException', function (err) {
  console.error(err.stack);
  console.log("Node NOT Exiting...");
});
Run Code Online (Sandbox Code Playgroud)

所以我怀疑它不是socket.io问题,而是对我做的另一个服务器的http请求或mysql/redis连接.问题是错误堆栈无法帮助我识别代码问题.这是日志输出:

Error: read ECONNRESET
    at errnoException (net.js:900:11)
    at TCP.onread (net.js:555:19)
Run Code Online (Sandbox Code Playgroud)

我怎么知道是什么原因造成的?如何从错误中获得更多信息?

好吧,不是很冗长,但这里是带有"longjohn"的堆栈跟踪:

Exception caught: Error ECONNRESET
{ [Error: read ECONNRESET]
  code: 'ECONNRESET',
  errno: 'ECONNRESET',
  syscall: 'read',
  __cached_trace__: …
Run Code Online (Sandbox Code Playgroud)

sockets tcp node.js express

266
推荐指数
13
解决办法
46万
查看次数

两个应用程序可以侦听同一个端口吗?

同一台机器上的两个应用程序可以绑定到同一个端口和IP地址吗?更进一步,一个应用程序可以收听来自某个IP和另一个远程IP的请求吗?我知道我可以有一个应用程序从两个线程(或叉子)开始有类似的行为,但两个没有任何共同点的应用程序可以做同样的事情吗?

sockets port udp tcp communication

262
推荐指数
7
解决办法
26万
查看次数

无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器(2)

我尝试连接到mysql时收到以下错误:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

这个错误有解决方案吗?它背后的原因可能是什么?

mysql sockets connect

245
推荐指数
14
解决办法
72万
查看次数

关闭vs关闭套接字?

在C中,我理解如果我们关闭套接字,则意味着套接字将被销毁,以后可以重新使用.

关机怎么样?描述说它关闭了与该套接字的双工连接的一半.但是那个套接字会像close系统调用一样被销毁吗?

c sockets networking

199
推荐指数
6
解决办法
23万
查看次数

标签 统计

sockets ×10

tcp ×3

express ×2

networking ×2

node.js ×2

port ×2

c ×1

communication ×1

connect ×1

ip ×1

java ×1

javascript ×1

linux ×1

mysql ×1

portability ×1

pug ×1

python ×1

udp ×1

unix ×1

windows ×1