标签: network-programming

什么是POSIX取消点?

什么是POSIX取消点?我正在寻找POSIX取消点的确切列表.

我这么问是因为我有一本书,说accept()select()是取消点,但我已经看到了在互联网上声称,他们没有网站.

此外,如果Linux取消点与POSIX取消点不同,我也想要它们的列表.

sockets multithreading posix network-programming pthreads

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

Android HTTP连接

任何人都可以告诉我为什么这在Android模拟器中不起作用?从浏览器我有访问权限,服务器是内部的.我能想到的是,我在我的应用程序上缺少一些配置,因此它可以访问网络层.

try {
    InetAddress server = Inet4Address.getByName("thehost");
    //Doesn't work either
    //or InetAddress server2 = Inet4Address.getByAddress(new String("192.168.1.30").getBytes());

    if(server.isReachable(5000)){
        Log.d(TAG, "Ping!");
    }

    Socket clientsocket = new Socket(server, 8080);
} catch (UnknownHostException e) {
    Log.e(TAG, "Server Not Found");
} catch (IOException e) {
    Log.e(TAG, "Couldn't open socket");
}
Run Code Online (Sandbox Code Playgroud)

抛出UnknownHostException

谢谢

java sockets android network-programming

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

unix socket中的异步和非阻塞有什么区别?

我在nginx中看到这样的代码:

if(fcntl(ngx_processes[s].channel[0], F_SETFL, fcntl(s, F_GETFL) | O_NONBLOCK) == -1) {
...
if (ioctl(ngx_processes[s].channel[0], FIOASYNC, &on) == -1) {
...
Run Code Online (Sandbox Code Playgroud)

谁能告诉我什么是之间的区别fcntl(s, F_SETFL, fcntl(s, F_GETFL) | O_NONBLOCK)ioctl(s, FIOASYNC, &on),不asyncnonblocking一样的东西?

c network-programming nonblocking asyncsocket

18
推荐指数
1
解决办法
6177
查看次数

在MAC层访问无线接口(802.11)(Linux)

我花了最后几天阅读手册页,文档和谷歌提出的任何其他内容,但我想我现在比起初时更加困惑.

这就是我想要做的事情:我希望通过带有C/C++的Linux系统上的无线接口(802.11)使用我自己的3-x协议发送和接收数据包.到现在为止还挺好.我不需要信标,关联或任何AP/SSID相关的东西.然而,对于数据传输,我希望MAC层"像往常一样",这意味着单播数据包是ACK,重传,退避等.我还想享受扩展的QoS功能(802.11e有4个队列和不同的访问类别).另一方面,混杂模式不是一个问题,我只需要广播数据包和发送到特定站的数据包.

什么是正确的方法呢?关于原始套接字访问的大多数文档似乎都集中在网络嗅探上,但这并没有帮助.我一直在玩监控模式已经有一段时间了,但从我到目前为止所读到的内容来看,收到的数据包在监控模式下没有确认等.如果没有监控模式,会有什么替代方案?使用ad hoc模式和unix原始套接字?或者我是否必须摆弄司机?

我不是在寻找一个完整的解决方案,只是一些好的想法,从哪里开始.我通读了socket(2),socket(7)和packet(7)的手册页,但这对于不同模式下MAC层的行为没有帮助.

提前致谢.

linux network-programming network-protocols raw-sockets systems-programming

18
推荐指数
2
解决办法
9390
查看次数

Linux select()vs ppoll()vs pselect()

在我的应用程序中,有一个专用的io-thread

  1. 在自定义协议中包装从应用程序接收的数据
  2. 通过tcp/ip发送数据+自定义协议数据包
  3. 通过tcp/ip接收数据+自定义协议包
  4. 展开自定义协议并将数据交给应用程序.

应用程序通过不同的线程处理数据.此外,要求规定未确认的窗口大小应为1,即任何时候应该只有一个未确认的未确认消息.这意味着如果io-thread已经通过套接字发送了一条消息,它将不再发送任何消息,直到它从接收方听到一个确认消息.应用程序的处理线程通过管道与io-thread通信.如果来自linux CLI的人键入ctrl + C,应用程序需要正常关闭.因此,鉴于这些要求,我有以下选择

  1. 在套接字和管道描述符上使用PPoll()
  2. 使用选择()
  3. 使用PSelect()

我有以下问题

  1. select()和poll()之间的决定.我的应用程序只处理少于50个文件描述符.可以假设我选择选择或民意调查没有区别吗?

    1. select()和pselect()之间的决定.我阅读了linux文档,它说明了signal和select之间的竞争条件.我没有信号经验,所以有人可以更清楚地解释竞争条件和选择()吗?它是否与某人在CLI上按ctrl + C并且应用程序没有停止有关?

    2. pselect和ppoll()之间的决定?对一个与另一个的任何想法

c linux network-programming

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

什么是python中Socket.accept()的返回值

socket在python中创建了一个简单的服务器和一个带有模块的简单客户端.

服务器:

# server.py
import socket

s = socket.socket()
host = socket.gethostname()
port = 1234
s.bind((host, port))

s.listen(5)

while True:
    c, addr = s.accept()
    print 'Got connection from', addr
    c.send('Thank you for your connecting')
    c.close()
Run Code Online (Sandbox Code Playgroud)

和客户:

#client.py
import socket

s = socket.socket()

host = socket.socket()
port = 1234

s.connect((host, port))
print s.recv(1024)
Run Code Online (Sandbox Code Playgroud)

我启动了服务器然后启动了4个客户端并在服务器控制台中输出如下:

Got connection from ('192.168.0.99', 49170)
Got connection from ('192.168.0.99', 49171)
Got connection from ('192.168.0.99', 49172)
Got connection from ('192.168.0.99', 49173)
Run Code Online (Sandbox Code Playgroud)

元组中的第二部分是什么?

python sockets network-programming

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

xcopy与远程计算机上的凭据

我试图通过其IP地址访问不同域上的远程服务器.在运行命令中,我输入了以下内容

\\XXX.XXX.XXX.XXX\C$\Program Files\
Run Code Online (Sandbox Code Playgroud)

我得到一个弹出窗口,询问用户名和密码.我输入它,并访问路径.当我再次尝试访问该文件夹时,它不会要求我输入密码.但是当我重新启动时,它确实会再次弹出窗口.

有没有办法添加我的凭据?让我们说我的域\用户名是MyDomain\RapsyTree.我尝试了以下方法:

cmdkey /generic:TERMSRV/YYY.YY.YYY.YYY /user:YourDomain\rapsalands /pass:secretPass
Run Code Online (Sandbox Code Playgroud)

凭据正在添加.但我仍然弹出用户名和密码.

实际上我正在尝试xcopy在不同域上的这个服务器上的一些文件.但我需要使用不同的凭据来做到这一点.我正在使用批处理文件.任何指针都会有很大的帮助.如果我不清楚,请告诉我.我正在使用Windows 7谢谢!

network-programming credentials batch-file remote-access

18
推荐指数
3
解决办法
8万
查看次数

如何从IP地址和子网掩码中确定网络和广播地址?

例如:

  • IP地址: 130.45.34.36
  • 面具: 255.255.240.0

什么是网络ID /子网地址和广播地址?

ip networking network-programming broadcast subnet

18
推荐指数
1
解决办法
5万
查看次数

HTTP POST的延迟来自哪里?

我正在使用cpp-netlib在异步模式下使用C++在Ubuntu 14.04上开发Web服务.该服务需要响应消息正文中通过HTTP POST发送的数据.当接收大于1K的输入时,我观察到性能不佳,我想解决这个问题.

如果数据相对较小,小于1K,则服务器几乎立即接收数据.如果数据大于1K,则在将第一个实际数据块呈现给回调之前首次调用异步读回调函数后,大约会有一秒钟的延迟.在最初的延迟之后,随后的块几乎立即到达.

我怎样才能消除这种延迟?是使用curl发布测试数据的工件吗?如何轻松测试curl发布数据的性能?

你可以找到在github上演示问题的最小源代码.这是我用来将数据发布到服务器的命令:

rcook$ curl -d @AsyncDaemon.h http://localhost:8787/foo
Run Code Online (Sandbox Code Playgroud)

以下是其输出示例(带注释):

rcook$ ./async_daemon 
1431387368.321863: AsyncDaemon constructor
1431387368.322446: receive thread beginning

*** It's waiting for a connection here.

1431387371.536191: begin transaction 0 on thread 24050
1431387371.536237: transaction 0 constructor
1431387371.536273: received 1206 byte request for /foo from 127.0.0.1:49402
1431387371.536312: invoked asynchronous read
1431387371.536321: end transaction handler
1431387371.536335: begin asynchronous read callback on thread 24050
1431387371.536348: read 0 bytes
1431387371.536386: invoked asynchronous read
1431387371.536394: end asynchronous read callback

*** …
Run Code Online (Sandbox Code Playgroud)

c++ performance curl network-programming cpp-netlib

18
推荐指数
1
解决办法
1388
查看次数

套接字的关闭,断开,关闭和处理究竟做了什么?

很难找到关于这四种方法实际做什么的简单解释,针对网络编程新手.人们通常只是声明他们认为在特定场景中关闭套接字的正确方法,而不是在每个步骤背后的背景中发生的事情.

通过示教一个人对鱼的理念去,你能解释的Shutdown,Disconnect,CloseDispose方法呢?

.net c# sockets network-programming winsock

18
推荐指数
1
解决办法
8437
查看次数