标签: network-programming

套接字编程和Http编程之间的区别

套接字编程和Http编程有什么区别?有人可以帮忙吗?

sockets network-programming

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

socket connect()vs bind()

两者connect()bind()系统调用都将套接字文件描述符"关联"到一个地址(通常是ip/port组合).他们的原型如下: -

int connect(int sockfd, const struct sockaddr *addr,
               socklen_t addrlen);
Run Code Online (Sandbox Code Playgroud)

int bind(int sockfd, const struct sockaddr *addr,
            socklen_t addrlen);
Run Code Online (Sandbox Code Playgroud)

2个电话之间的确切区别是什么?应该connect()何时使用何时bind()

具体来说,在一些示例服务器客户端代码中,发现客户端正在使用connect()而服务器正在使用该bind()调用.理由并不完全清楚.

c sockets network-programming

104
推荐指数
5
解决办法
10万
查看次数

Web服务器可以处理多少个套接字连接?

假如我要获得共享,虚拟或专用托管,我在某处读取服务器/机器一次只能处理64,000个TCP连接,这是真的吗?无论带宽如何,任何类型的托管处理有多少?我假设HTTP通过TCP工作.

这意味着只有64,000个用户可以连接到该网站,如果我想提供更多服务,我必须转移到网络农场吗?

hosting network-programming tcp tcplistener http

101
推荐指数
5
解决办法
10万
查看次数

正确使用beginBackgroundTaskWithExpirationHandler

我对如何以及何时使用感到困惑beginBackgroundTaskWithExpirationHandler.

Apple在他们的示例中显示在applicationDidEnterBackground委托中使用它,以便有更多时间来完成一些重要任务,通常是网络事务.

在查看我的应用程序时,似乎我的大多数网络内容都很重要,当一个人启动时,如果用户按下主页按钮,我想完成它.

因此,beginBackgroundTaskWithExpirationHandler为了安全起见,包装每个网络事务(并且我不是在谈论下载大量数据,大多数是短xml)是接受/良好做法 吗?

network-programming objective-c multitasking ios background-thread

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

TCP:两个不同的套接字可以共享一个端口吗?

这可能是一个非常基本的问题,但它让我感到困惑.

两个不同的连接插座可以共用一个端口吗?我正在编写一个应该能够处理超过10万个并发连接的应用服务器,而且我们知道系统上可用的端口数量大约为60k(16位).连接的套接字被分配给新的(专用)端口,因此这意味着并发连接的数量受端口数量的限制,除非多个套接字可以共享同一个端口.所以问题.

我在这里先向您的帮助表示感谢!

sockets port network-programming tcp

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

当您需要可靠的UDP时,您会使用什么?

如果您的TCP连接可能太慢并且UDP"连接"可能太不可靠,您使用什么?有各种标准的可靠UDP协议,你有什么经验吗?

请在每个回复中讨论一个协议,如果其他人已经提到您使用的协议,则考虑将其投票并使用评论进行详细说明(如果需要).

我对这里的各种选项感兴趣,其中TCP位于规模的一端而UDP位于另一端.提供了各种可靠的UDP选项,每个选项都带有TCP到UDP的一些元素.

我知道TCP通常是正确的选择,但是有一个备选列表通常可以帮助我们得出结论.像UDP,RUDP等基于UDP构建的东西各有利弊,你使用它们,你的经历是什么?

为了避免疑问,没有更多的信息,这是一个假设的问题,我希望这个问题会引出一个回复列表,详细说明需要做出决定的人可以使用的各种选项和备选方案.

sockets udp network-programming tcp

90
推荐指数
7
解决办法
6万
查看次数

UNIX非阻塞I/O:O_NONBLOCK与FIONBIO

在我在BSD套接字编程的上下文中运行的每个示例和讨论中,似乎将文件描述符设置为非阻塞I/O模式的推荐方法是使用O_NONBLOCK标志fcntl(),例如

int flags = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
Run Code Online (Sandbox Code Playgroud)

我已经在UNIX中进行了十多年的网络编程,并且一直使用FIONBIO ioctl()调用来执行此操作:

int opt = 1;
ioctl(fd, FIONBIO, &opt);
Run Code Online (Sandbox Code Playgroud)

从来没有真正考虑过为什么.刚学会这种方式.

有没有人对其中一个或两个可能各自的优点有任何评论?我认为可移植性轨迹在某种程度上有所不同,但不知道在多大程度上与ioctl_list(2)单个ioctl方法的那个方面没有对话.

c unix sockets network-programming

90
推荐指数
3
解决办法
11万
查看次数

为什么在没有尝试I/O的情况下检测TCP套接字是否被对等端正常关闭是不可能的?

作为最近一个问题的后续内容,我想知道为什么在没有尝试在TCP套接字上进行读/写操作的情况下,为什么Java不可能检测到套接字已被对等端正常关闭?无论是使用前NIO Socket还是NIO ,情况似乎都是如此SocketChannel.

当对等体正常关闭TCP连接时,连接两端的TCP堆栈都知道这一事实.服务器端(启动关闭的那个)最终处于状态FIN_WAIT2,而客户端(未明确响应关闭的那个)最终处于状态CLOSE_WAIT.为什么没有一个方法SocketSocketChannel可以查询TCP堆栈看到底层的TCP连接是否已经终止?是不是TCP堆栈没有提供这样的状态信息?或者这是一个设计决定,以避免昂贵的内核调用?

在已经发布了这个问题的答案的用户的帮助下,我想我会看到问题可能来自哪里.未明确关闭连接的一方最终处于TCP状态,CLOSE_WAIT这意味着连接正在关闭并等待一方发出自己的CLOSE操作.我认为isConnected返回trueisClosed返回是公平的false,但为什么不存在类似的东西isClosing呢?

以下是使用pre-NIO套接字的测试类.但使用NIO可获得相同的结果.

import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {
  public static void main(String[] args) throws Exception {
    final ServerSocket ss = new ServerSocket(12345);
    final Socket cs = ss.accept();
    System.out.println("Accepted connection");
    Thread.sleep(5000);
    cs.close();
    System.out.println("Closed connection");
    ss.close();
    Thread.sleep(100000);
  }
}


import java.net.Socket;

public class MyClient {
  public static …
Run Code Online (Sandbox Code Playgroud)

java sockets network-programming tcp

89
推荐指数
5
解决办法
3万
查看次数

用Java获取"外部"IP地址

我不太确定如何获取机器的外部IP地址,因为网络外的计算机会看到它.

我的以下IPAddress类仅获取计算机的本地IP地址.

public class IPAddress {

    private InetAddress thisIp;

    private String thisIpAddress;

    private void setIpAdd() {
        try {
            InetAddress thisIp = InetAddress.getLocalHost();
            thisIpAddress = thisIp.getHostAddress().toString();
        } catch (Exception e) {
        }
    }

    protected String getIpAddress() {
        setIpAdd();
        return thisIpAddress;
    }
}
Run Code Online (Sandbox Code Playgroud)

java networking network-programming external ip-address

81
推荐指数
7
解决办法
10万
查看次数

PHP中的异步函数调用

我正在开发一个PHP Web应用程序,我需要在请求中执行一些网络操作,例如根据用户的请求从远程服务器获取某人.

是否有可能在PHP中模拟异步行为,因为我必须将一些数据传递给函数并且还需要从它输出.

我的代码是这样的:

<?php

     $data1 = processGETandPOST();
     $data2 = processGETandPOST();
     $data3 = processGETandPOST();

     $response1 = makeNetworkCall($data1);
     $response2 = makeNetworkCall($data2);
     $response3 = makeNetworkCall($data3);

     processNetworkResponse($response1);
     processNetworkResponse($response2);
     processNetworkResponse($response3);

     /*HTML and OTHER UI STUFF HERE*/

     exit;
?>
Run Code Online (Sandbox Code Playgroud)

在发出3个请求时,每个网络操作大约需要5秒钟才能完成为应用程序的响应时间添加总计15秒.

makeNetworkCall()函数只是执行HTTP POST请求.

远程服务器是第三方API,所以我没有任何控制权.

PS:请不要回答关于AJAX或其他事情的建议.我目前正在寻找是否可以通过PHP实现这一点,可能是C++扩展或类似的东西.

php asynchronous network-programming

73
推荐指数
5
解决办法
16万
查看次数