标签: network-programming

在套接字编程中选择功能

谁能告诉我selectc中套接字编程中函数的使用和应用?

c networking network-programming

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

最简单的QT TCP客户端

我想连接到监听服务器并传输一些数据.我查看了可用的示例,但它们似乎有额外的功能,对我来说似乎没有什么帮助(即连接,财富等).这是我到目前为止的代码:

QTcpSocket t;
t.connectToHost("127.0.0.1", 9000);
Run Code Online (Sandbox Code Playgroud)

假设服务器正在监听并且健壮,那么我需要实现什么来发送具有数据类型的数据变量QByteArray

c c++ qt network-programming

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

IP结构中的缩写"s_","ai_","sin_","in"(如果是这样)是什么意思?

非常简单的问题.是的,也许不是那么重要,但我真的好奇他们的意思是什么,我找不到他们的意思.


// ipv4
struct sockaddr_in {
    short int          sin_family;  // Address family, AF_INET
    unsigned short int sin_port;    // Port number
    struct in_addr     sin_addr;    // Internet address
    unsigned char      sin_zero[8]; // Same size as struct sockaddr
};

// ipv4    
struct in_addr {
    uint32_t s_addr; // that's a 32-bit int (4 bytes)
};

// ipv6
struct addrinfo {
    int              ai_flags;     // AI_PASSIVE, AI_CANONNAME, etc.
    int              ai_family;    // AF_INET, AF_INET6, AF_UNSPEC
    int              ai_socktype;  // SOCK_STREAM, SOCK_DGRAM
    int              ai_protocol;  // use 0 for "any" …
Run Code Online (Sandbox Code Playgroud)

c sockets linux ip network-programming

16
推荐指数
2
解决办法
1397
查看次数

操作系统如何知道用于互联网的网络接口?

我有一台带有两个网络接口的PC:eth0和eth1.

eth0 - ip为192.168.11.X/24.

eth1 - ip为192.168.130.X/24.eth1具有互联网连接.

当我尝试连接到互联网时,我的操作系统如何知道使用哪个界面?它是否遍历所有默认网关?它是否具有每个接口提供的缓存?Windows和Linux之间的行为有什么不同吗?

sockets network-programming network-interface

16
推荐指数
1
解决办法
8186
查看次数

如何模拟TCP/IP错误?

在多层应用程序上,我需要模拟各种TCP/IP错误来测试一些重新连接代码.有谁知道我可以用于此目的的任何工具(基于Windows)?谢谢.

windows network-programming tcp multi-tier

15
推荐指数
2
解决办法
2513
查看次数

在没有服务器调用'accept'的情况下,套接字上的'connect'调用可以成功返回

服务器已创建一个套接字并绑定到一个端口,并启动一个循环中的线程来接受该连接.稍后循环由于异常导致线程退出而退出但是套接字仍然限制为端口.现在,如果客户端对此服务器进行"连接",则它会成功.这怎么可能?如果我理解正确,'connect'仅在服务器在侦听套接字上"接受"后返回.我在这里错过了什么吗?

sockets linux network-programming tcp

15
推荐指数
1
解决办法
5440
查看次数

让两个UDP服务器监听同一个端口?

我有一个客户端通过UDP广播发送数据.(比如说127.0.0.255:12345)

现在我想让多个服务器监听这些数据.要在本地计算机上执行此操作,他们需要共享端口12345以进行侦听.

我的问题是,如果可能,如果有任何不利之处,并且这种方法可能存在问题.

不幸的是,有一种替代方案会带来很多开销:
实现某种注册过程.在启动时,每个服务器都告诉客户端它的端口.客户端然后将消息发送到每个端口(必须多次发送数据,需要实现某种握手......)
你知道更好的替代方案吗?

如果重要:
我正在使用C++和Boost :: Asio.该软件应该是可移植的(主要是Linux和Windows).

networking udp network-programming

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

连接(功能)错误时正在进行操作错误

我想设置函数connect的超时值,但我收到此错误:"正在进行操作"

我的代码:

if ((he = gethostbyname(authdefhost)) == NULL) {
        snprintf(errbuf, CERRBUFSIZ - 1, "cannot resolve %s: %s\n", authdefhost, hstrerror(h_errno));
        return -1;
}

sin.sin_family = AF_INET;
memcpy(&sin.sin_addr, he->h_addr_list[0], sizeof(struct in_addr));       

if ((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        snprintf(errbuf, CERRBUFSIZ - 1, "cannot create client socket: %s\n", strerror(errno));
        return -1;
}

if ((fcntl(sd, F_SETFL, O_NONBLOCK) < 0))
    printf("error on setting socket flags.");

if (connect(sd, (void *) & sin, sizeof(sin)) == -1) {
        snprintf(errbuf, CERRBUFSIZ - 1, "cannot connect to server …
Run Code Online (Sandbox Code Playgroud)

c sockets network-programming

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

是否可以通过获取IP地址来使用套接字连接两个ios设备?

我想通过套接字连接多个设备而不需要任何服务器实现.我将仅使用它来获取将要注册的设备的IP地址.

iphone xcode network-programming objective-c ios

15
推荐指数
2
解决办法
8994
查看次数

从具有Read :: read_to_string的TcpStream读取将挂起,直到远程端关闭连接

我正在尝试在Rust中实现Haskell IRC bot教程,并且在连接后读取服务器发送给我的内容时遇到了一些困难.似乎发生的事情是我连接,从服务器读取~5 KB,然后大约240秒后,所有内容立即被转储,而不是逐行读取.连接由ping超时关闭,最终应该发生,因为我还没有ping-pong函数来回复.

这是我到目前为止所拥有的:

use std::io::{Read, Write};
use std::net::TcpStream;

fn main() {
    let mut stream = TcpStream::connect("irc.freenode.org:6667").unwrap();

    let _ = stream.write(b"NICK G-SERUFU\r\n");
    let _ = stream.write(b"USER G-SERUFU 0 * :brobot\r\n");
    let _ = stream.write(b"JOIN #tutbot-testing\r\n");

    let mut line = String::with_capacity(512);
    loop {
        let result = stream.read_to_string(&mut line);
        match result {
            Ok(n) => println!("Received {} bytes", n),
            _ => {}
        }
        line.clear();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我修改循环a以使用数组而不是字符串时,我立即得到我期望的输出:

let mut line;
loop {
    line = [0; 512];
    let result = stream.read(&mut …
Run Code Online (Sandbox Code Playgroud)

io network-programming rust

15
推荐指数
1
解决办法
5677
查看次数