gpt4 book ai didi

c# - C#测试Socket是否连接

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:42 24 4
gpt4 key购买 nike

您好,我正在编写一个简单的服务器程序来监听连接。我的问题是,如何测试套接字是否已连接。这是我的代码

using System;
using System.Net;
using System.Net.Sockets;

class server
{
static int port = 0;
static String hostName = Dns.GetHostName();
static IPAddress ipAddress;
static bool listening = true;

public static void Main(String[] args)
{
IPHostEntry ipEntry = Dns.GetHostByName(hostName);

//Get a list of possible ip addresses
IPAddress[] addr = ipEntry.AddressList;

//The first one in the array is the ip address of the hostname
ipAddress = addr[0];

TcpListener server = new TcpListener(ipAddress,port);

Console.Write("Listening for Connections on " + hostName + "...");

do
{

//start listening for connections
server.Start();



} while (listening);


//Accept the connection from the client, you are now connected
Socket connection = server.AcceptSocket();

Console.Write("You are now connected to the server");

connection.Close();


}


}

最佳答案

我想你把 bean 搞砸了。在底层,在操作系统级别,有两个不同的概念:监听套接字 - 即 TcpListener,和连接套接字 - 这就是你accept() 成功后获取。

现在,监听 TCP 套接字未连接,但绑定(bind)到本地机器上的端口(可能还有地址)。那是服务器等待来自客户端的连接请求的地方。一旦这样的请求到达,操作系统就会创建一个新的套接字,它在某种意义上是连接的,它具有通信所需的所有四个部分 - 本地 IP 地址和端口,以及远程地址和端口 - 已填写。

从一些介绍性文字开始,例如 this one .更好的是 - 从 real one 开始.

关于c# - C#测试Socket是否连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com