草庐IT

socket_desc

全部标签

sockets - 为什么我们不能使用进程 ID 而不是使用我们绑定(bind)的端口

为什么我们不能使用进程ID而不是获取我们在套接字编程中绑定(bind)的端口。在套接字编程中,我们创建套接字并获取套接字描述符,然后绑定(bind)到特定端口。对于多个连接,为什么我们不使用进程ID,因为所有连接也是一个返回进程ID的进程? 最佳答案 这是一个有趣的想法,但我认为它会引发一些问题:您如何知道要连接到哪个进程ID?如果您想在同一进程中监听多个“端口”怎么办?您只有一个进程ID。IPv4和IPV6为端口ID分配16位,但进程ID通常是32位(或更大)值,因此它们不适合有很多程序没有联网功能,也不需要。自动实例化通向它们的

sockets - "Connectionless, unconnected"连接

我刚开始学习套接字编程,我遇到了一个我以前见过但让我很困惑的概念。UDP连接好像是“无连接,未连接”的连接。“无连接”和“未连接”不是多余的吗?那么有4种连接吗?即无连接,未连接无连接,连接面向连接未连接面向连接,连接最后,“无连接、未连接”的连接功能如何实现?这不是矛盾吗?哈哈 最佳答案 从技术上讲,您可以在UDP套接字上调用connect()。在这种情况下,套接字会记住对等地址,因此可以使用send()或write()系统调用而不是sendto()来发送数据报>。此外,它使套接字仅从该对等点接收数据报,而丢弃来自其他对等点的数据

java.net.SocketException : socket closed TCP Client Server Communication 异常

这个问题在这里已经有了答案:Officialreasonsfor"Softwarecausedconnectionabort:socketwriteerror"(14个答案)关闭3年前。我正在通过TCP创建一个java客户端/服务器应用程序,我们有两个套接字:一个用于交换消息。两个用于文件传输。我在服务器中创建了两个ServerSockets以创建套接字一和二通过接受ServerSockets。首先客户端通过第一个Socket发送一些字节这样它就可以告诉服务器它需要哪个文件。然后Server通过第二个socket将文件发送给client。客户端收到文件后,尝试向服务器发送回传输完成消息

c# - 带有 socket.io (nodejs) 的 tcp 客户端

我需要一个连接到C#应用程序的nodejs服务器,我不喜欢使用第三方库,所以我一直在尝试使用TcpClient,服务器是这样的:vario=require('socket.io').listen(8000);io.socket.on('connection',function(socket){console.log("connected");}在C#项目上:varclient=newTcpClient(Server,8000);Sockets=client.Client;if(!s.Connected){s.SetSocketOption(SocketOptionLevel.Socke

tcp - Erlang中socket的 "packet"选项怎么能把tcp传输加速这么多?

使用{packet,4}通过本地主机上的两个不同端口传输1G数据仅需8秒,而使用{packet,raw}无法在30秒内完成同一任务。我知道如果使用后一种方法,数据将以数万个小块的形式到达(在archlinux上大小为1460字节)。我已经了解了TCP/IP协议(protocol)的某些方面,并且已经思考这个问题好几天了,但仍然无法弄清楚确切的区别是什么。真诚期待一些自下而上的解释。-module(test).-export([main/1]).-define(SOCKOPT,[binary,{active,true},{packet,4}]).main(_)->{ok,LSock}=g

sockets - 如何检查 luasocket 库中的套接字是否关闭?

我正在用Lua编程语言写一个服务器,网络层是基于LuaSocket.而且我在其引用手册中找不到任何检测套接字是否关闭的方法,除非尝试从中读取数据(调用时它将返回nil和字符串'close')。我的代码是这样的:localsocket=require'socket'localserver=socket.tcp()localport=9527server:bind('*',port)localstatus,errorMessage=server:listen()ifstatus==1thenprintf('Serverislaunchedsuccessfullyonport%u',port

sockets - 在 Windows 中如何检测哪个程序正在监听 TCP/IP 端口?

我继承了一个应用程序,它在端口7001上监听来self们内部测试设备的UDP广播,我最近更新了另一个需要做同样事情的应用程序。这两个应用程序必须能够在同一台计算机上共存。目前,当我最近更新的应用程序尝试绑定(bind)到端口以监听UDP广播但失败时,它只是报告该端口不可用,并表明继承的应用程序可能正在运行。我怎样才能让我的应用程序检测到哪个应用程序实际上正在监听该端口?我已经进行了Google搜索,甚至搜索了该站点,但到目前为止,除了使用TaskManager之外我找不到任何东西。,TCPView,或netstat在命令行。我更喜欢使用WindowsAPI或Windows系统COM组件

sockets - TCP keepalive 是否会刷新 NAT 上的超时?

I'vereadNAT路由器“如果在特定时间段内没有发送数据,则假定连接已终止。”I'vealsoreadTCPkeepalive数据包通常不应包含任何数据。所以我的问题是:以上说法是否正确?NAT路由器在重新排序/清理它们的表时是否考虑空的TCPkeepalive数据包?我问这个是因为我需要两个端点之间的可靠连接,它们都必须能够检测到连接问题并使用react。我知道我可能只是自己实现了一个keepalive机制,但我想知道TCP实现是否可以用于此目的。 最佳答案 我相信第二个陈述是指有效载荷(最短的TCP/IP数据包长度为40字节

iOS使用socket连接发送数据

我已经在iOS中实现了套接字连接。我想做的是向连接的设备发送一串数据...(当有人向我的设备发送数据时,我能够接收到数据)我已经尝试过此代码,但当我关闭我的应用程序时,其他设备正在接收数据。-(IBAction)connectToServer:(id)sender{NSLog(@"Settingupconnectionto%@:%i",_ipAddressText.text,[_portText.textintValue]);CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,(__bridgeCFStringRef)_ipAd

sockets - HTTP 响应如何发送回 TCP 中的正确客户端?

我试图了解HTTP服务器如何确保将正确的响应发送回正确的客户端。在一个非常高的层次上:在服务器实现的TCP层,一些ServerSocket(监听请求发送到的主机:端口)创建一个“客户端套接字”来处理请求(如果我们假设它是一个线程服务器)-在应用程序中分配一个线程并完成工作问题:-A.)响应是否必须通过处理请求的同一个套接字返回?B.)如果是,如何将Response映射到处理Request的同一个套接字?C.)是套接字负责维护响应数据包需要寻址回的客户端IP/主机,还是维护此信息然后用于寻址响应的HTTPheader正确的客户?如果HTTPheader信息用于将响应路由回调用客户端,那么