标签: network-programming

套接字如何在C中工作?

我对C中的套接字编程有点困惑.

您创建一个套接字,将其绑定到一个接口和一个IP地址,然后让它听.我发现了几个网络资源,并且理解得很好.特别是,我发现一篇文章在Unix系统下的网络编程非常有用.

令我困惑的是数据到达套接字的时间.

你怎么知道数据包何时到达,数据包有多大,你自己必须做所有繁重的工作吗?

我的基本假设是数据包可以是可变长度的,所以一旦二进制数据开始出现在套接字中,你如何从那开始构造数据包呢?

c sockets network-programming

21
推荐指数
2
解决办法
6096
查看次数

你如何限制C中套接字连接的带宽?

我正在使用BSD套接字编写客户端 - 服务器应用程序.它需要在后台运行,不断传输数据,但不能从正常使用中占用网络接口的带宽.根据接口的速度,我需要将此连接限制为某个最大传输速率.

以编程方式实现此目的的最佳方法是什么?

c c++ sockets network-programming

21
推荐指数
3
解决办法
1万
查看次数

UDP校验和计算

在/usr/include/netinet/udp.h中定义的UDP头结构如下

struct udphdr
{
  u_int16_t source;
  u_int16_t dest;
  u_int16_t len;
  u_int16_t check;
};
Run Code Online (Sandbox Code Playgroud)

标题的检查字段中存储了什么值?如何验证校验和是否正确?我的意思是校验和计算的数据是什么?(它只是udp头或udp头加上它后面的有效负载吗?)

谢谢.

c checksum udp network-programming

21
推荐指数
1
解决办法
8万
查看次数

C++ Boost Asio简单聊天教程

我一直在阅读Boost Asio教程(官方网站).但我发现它们颈部疼痛!是否有关于asio 的简单教程?!我的意思是,简单的客户端 - 服务器聊天.没有线程!! 谢谢!

c++ boost network-programming boost-asio

21
推荐指数
2
解决办法
3万
查看次数

什么是"服务器"上的存根,骨架是什么意思?

存根在服务器端做什么?什么是骨架

来自维基百科

这是来自维基百科的图表.我在服务器计算机和客户端计算机上都安装了存根.我知道存根有助于客户端的网络连接但是存根在服务器端做了什么?

在上图中骨架是什么意思?

java networking network-programming rmi

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

检测载波连接类型(3G/EDGE/GPRS)

如何获得运营商网络的连接类型?

  • 如果使用Reachability类 连接是WIFI或WWAN,我能够得到
  • 我能够获得网络标志

    可达性标志状态:WR t ------ localWiFiStatusForFlags

  • 我可以使用WIFI SSID CaptiveNetwork

支持的接口:(en0)

en0 => {  
    BSSID = "xx:xx:xx:xx:xx:xx";  
    SSID = MyWifiNetwork;  
    SSIDDATA = <x1x1x1x1 x1x1x1x1 x1>;  
}  
Run Code Online (Sandbox Code Playgroud)

但我无法区分3G,EDGE或GPRS连接.

任何想法也使用iOS私有API?

谢谢.

iphone network-programming objective-c iphone-privateapi ios

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

telnet与原始tcp连接有何不同

我试图通过python脚本将命令发送到服务器.我可以看到服务器上建立的套接字连接.但是我发送的命令似乎没有通过(服务器在套接字上读取).服务器当前支持telnet命令解释程序.即:你telnet到命令地址和端口,你可以开始发送字符串命令.我的问题是,与通过tcp套接字发送字符串有什么根本不同,而不是使用telnet.我既使用了原始套接字,也使用了Twisted框架.

python sockets network-programming telnet

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

同时使用accept()和select()?

我有一个事件驱动的网络服务器程序.此程序接受来自其他主机上其他进程的连接.在同一远程IP上可能存在来自不同端口的许多短期连接.

目前,我有一个while(1)循环调用accept()然后生成一个线程来处理新连接.读取消息后,每个连接都将关闭.在远程端,在发送消息后关闭连接.

我想通过缓存打开的套接字FD来消除设置和拆除连接的开销.在发送方,这很容易 - 我只是不关闭连接,并保持它们.

在接收方,它有点难.我知道我可以存储accept()在结构中返回的FD 并使用poll()或监听所有这些套接字上的消息select(),但我想同时通过所有缓存连接监听新连接accept() 监听.

如果我使用两个线程,一个打开poll(),一个打开accept(),那么当accept()调用返回(打开一个新连接)时,我必须唤醒另一个等待旧连接的线程.我知道我可以通过一个信号做到这一点pselect(),但是对于这么简单的事情来说,这整个混乱似乎太过分了.

有没有一个电话或更好的方法可以让我同时处理打开的新连接和旧连接上发送的数据?

sockets network-programming tcp

20
推荐指数
2
解决办法
3万
查看次数

为什么必须通过HTTP发送SOAP消息?

下面是一个演示SOAP请求消息:

HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn

    <SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   <SOAP-ENV:Header>
       <t:SessionOrder
         xmlns:t="http://example.com"
         xsi:type="xsd:int" mustUnderstand="1">
           5
       </t:SessionOrder>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
       <GetStockQuote
         xmlns="http://someexample.com">
           <Price>MSFT</Price>
       </GetStockQuote>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

我们可以看到,这个SOAP消息被编码为好像它是一个网页.为什么我们必须使用HTTP协议?SOAP消息只是一些XML,为什么我们不只是使用XML作为信息交换协议并摆脱HTTP头(因此只留下HTTP).

非常感谢.

更新 - 1

HTTP不是传输级协议.它只是一个应用程序级协议.它与运输无关.实际上,我的问题是将HTTP内容添加到SOAP消息的动机是什么?

xml soap network-programming protocols webservice-client

20
推荐指数
3
解决办法
4万
查看次数

pwnat仍在工作吗?

我需要NAT遍历的解决方案来通过互联网传输RDP数据.我遇到了以下工具,它真的很棒 - pwnat.

我已尝试使用不同路由器后面的两台不同的机器,但我无法使其工作,如上面链接中所述.所以pwnat仍然有效,如果是的话,我做错了什么?这对我很有帮助.

注意:我正在使用Windows机器进行测试,并从以下链接下载了Windows版本.

http://www.sumitgupta.net/pwnat-windows-complied-version/

任何帮助请..

rdp network-programming nat pwnat

20
推荐指数
1
解决办法
5047
查看次数