tcpclient-10

问题描述:indy10 tcpclient 已经断开连接,为什么connected还为true 大家好,给大家分享一下一个有趣的事情,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

INDY10 TIdTCPClient的一个问题,求解答

tcpclient-10的相关图片

TIdTCPClientCustom.Connect源码如下,中文注释是自己写的。

procedure TIdTCPClientCustom.Connect;begin if Connected then begin EIdAlreadyConnected.Toss(RSAlreadyConnected); //如果已经连接则抛出AlreadyConnected的异常 end; if Host = '' then begin EIdHostRequired.Toss(''); //如果Host为空,则抛出EIdHostRequired的异常 end; if Port = 0 then begin EIdPortRequired.Toss(''); //如果Host为空,则抛出EIdPortRequired的异常 end; if IOHandler = nil then begin IOHandler := MakeImplicitClientHandler; IOHandler.OnStatus := OnStatus; //改变OnStatus的状态 ManagedIOHandler := True; end; try // Bypass GetDestination if FDestination <> '' then begin IOHandler.Destination := FDestination; end;{BGO: not any more, TIdTCPClientCustom has precedence now (for port protocols, and things like that) // We retain the settings that are in here (filled in by the user) // we only do this when the iohandler has no settings, // because the iohandler has precedence if (IOHandler.Port = 0) and (IOHandler.Host = '') then begin IOHandler.Port := FPort; IOHandler.Host := FHost; end;} IOHandler.Port := FPort; //BGO: just to make sure IOHandler.Host := FHost; IOHandler.ConnectTimeout := FConnectTimeout; IOHandler.ReadTimeout := FReadTimeout; if Socket <> nil then begin Socket.BoundIP := FBoundIP; Socket.BoundPort := FBoundPort; Socket.BoundPortMin := FBoundPortMin; Socket.BoundPortMax := FBoundPortMax; Socket.IPVersion := FIPVersion; Socket.ReuseSocket := FReuseSocket; Socket.UseNagle := FUseNagle; Socket.OnBeforeBind := FOnBeforeBind; Socket.OnAfterBind := FOnAfterBind; Socket.OnSocketAllocated := FOnSocketAllocated; end; IOHandler.Open; //打开IO if IOHandler.Intercept <> nil then begin IOHandler.Intercept.Connect(Self); end; DoStatus(hsConnected, [Host]); DoOnConnected; //调用OnConnected函数 except //捕捉异常 if IOHandler <> nil then begin IOHandler.Close; if ManagedIOHandler then begin IOHandler := nil; // RLebeau - SetIOHandler() will free the IOHandler end; end; raise; end;end;。

电脑提示发送错误:由于目标计算机积板拒绝,无法连接。127.0.0.1:6000的相关图片

电脑提示发送错误:由于目标计算机积板拒绝,无法连接。127.0.0.1:6000

应该是无法建立安全的TCP/IP连接的意思, 错误信息里未详细说明无法建立连接的原因, 猜测: 。

可能是IP地址不对;

也可能是网络不通;

或者是有防火墙,导致无法建立连接;。

还有一种可能是安全加密协议不支持, 或者密钥未设置或者不对导致的;。

看看下面的参考吧,可能对你有帮助: 该控件包装了一个完整的TCP客户端。该客户端包括sock支持。该控件是以下客户端控件的父类: TIdDayTime, TIdEcho, TIdFinger, TIdFTP, TIdGopher, TIdHTTP, TIdNNTP, TIdPOP3, TIdQUOTD, TIdSMT.。

c# 使用tcpclient 调用接口得到返回值怎么解析。的相关图片

c# 使用tcpclient 调用接口得到返回值怎么解析。

在运行中输入cmd ,然后用 netstat -an 看下有没有8888这个端口?至少可以看是不是被占用了。

是TCP协议吧,原因是服务器没有启动,或者启动了没有处于侦听状态。

是TCP协议,在实例化tcpclient = new TcpClient(remoteIpString, remotePort);的时候报错。

我想问一下,在同一个程序中怎么既充当服务器有充当客户端?

很有如果我用本机的ip做监听服务器地址,然后用127.0.0.1做客户机的ip地址可以嘛?

我想做的是P2P数据传送

这个8888应该是服务端的监听端口,如果netstat看不到的话肯定是会发生lz你所说的问题的。你应该还要启动这个服务端才对。

貌似不是在服务器端了,程序开始默认获取本机ip地址以及一个可用的端口,然后对这个端口进行监听。然后让你添加一个或多个好友ip地址及端口号。我是在添加好友的时候出现这个错误的。添加好友的ip我试过用127.0.0.1和本机ip,都报这个错。

网上那些“范例”很多都是所谓的单机demo,不要相信是产品的。回答你#4楼的问题。最起码的,通用服务器不是什么什么127.0.0.1进行bind操作的。比较正规的是IPAddress.Any,比较业余的也是从dns对象中遍历IPAddress集合,找出其中第一个符合ipv4模式的地址。你看到127.0.0.1的,直接把这个写“范例”的作者当作骗子好了。

大规模的测试,产品化的测试,这是必需的。不要相信仅仅是为了掩饰一个特别方法随便写的所谓范例。即使是msdn上的通讯范例,大多数也是非产品化的。因为它如果按照产品设计必须有的要素来设计,初学者反而会“看不懂”。这就是一个现实矛盾。

服务器应该害是启动了的,服务器的ip是本机ip,端口号时一个随机可用的值。这是我的理解。

我把监听的代码贴上来,在程序加载方法里调用。

ThreadStart myThreadStartDelegate = new ThreadStart(Listensing);。

//创建一个用于监听的线程对象,通过代理执行线程中的方法 myThread = new Thread(myThreadStartDelegate);。

//启动线程。

myThread.Start();。

一下是监听方法

private void Listensing()。

{

Socket socket = null;。

//获取本机上第一个可用的IP地址 myIPAddress = (IPAddress)Dns.GetHostAddresses(Dns.GetHostName()).GetValue(0);。

Random r = new Random();。

while (true) 。

{

try。

{。

//随机产生一个0~65535之间的端口号。

myPort = r.Next(65535);。

//myPort = 8888;。

//创建TcpListener对象,在本机的IP和Port端口监听连接到该IP和端口的请求。

tcpListener = new TcpListener(myIPAddress, myPort);。

//开始监听,如果不出现异常,则说明IP地址和端口号可用。

tcpListener.Start();。

//显示IP地址和端口。

ShowLocalIPAndPort();。

//在信息窗口显示成功信息。

ShowMyMessage(string.Format("尝试用端口{0}监听成功", myPort));。

ShowMyMessage(string.Format("<message>[{0}]{1:h点m分s秒}开始在端口{2}监听与本机的连接", myIPAddress, DateTime.Now, myPort));。

break;。

}。

catch 。

{。

//继续while循环,以便随机找下一个可用端口号,同时显示失败信息。

ShowMyMessage(string.Format("尝试用端口{0}监听失败", myPort));。

}。

}

while (true) 。

{

try。

{。

//使用阻塞方式接受客户端连接,根据连接信息创建Tcpclient对象。

//注意:AcceptSocket接受到新的连接请求才会继续执行其后的语句。

socket = tcpListener.AcceptSocket();。

//如果往下执行,说明已经根据客户端连接请求创建了套接字。

//使用创建的套接字接受客户端发送的信息。

NetworkStream stream = new NetworkStream(socket);。

StreamReader sr = new StreamReader(stream);。

string recieveMessage = sr.ReadLine();。

int i1 = recieveMessage.IndexOf(",");。

int i2 = recieveMessage.IndexOf(",", i1 + 1);。

int i3 = recieveMessage.IndexOf(",", i2 + 1);。

string ipString = recieveMessage.Substring(0, i1);。

string portString = recieveMessage.Substring(i1 + 1, i2 - i1 - 1);。

string messageTypeString = recieveMessage.Substring(i2 + 1, i3 - i2 - 1);。

string messageString = recieveMessage.Substring(i3 + 1);。

ShowMyMessage(ipString, portString, messageTypeString, messageString);。

}。

catch 。

{。

//通过停止TcpListener使AcceptSocket方法出现异常。

//在异常处理中关闭套接字并终止线程。

if (socket != null) 。

{。

if (socket.Connected) 。

{。

socket.Shutdown(SocketShutdown.Receive);。

}。

socket.Close();。

}。

myThread.Abort();。

}。

}

}

http://topic.csdn.net/u/20100506/18/19b27fcf-af70-4016-a30c-10de342c3214.html。

System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:80。

在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)。

在 System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)。

在 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)。

--- 内部异常堆栈跟踪的结尾 ---。

在 System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)。

在 System.Net.HttpWebRequest.GetRequestStream()。

在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)。

苹果手机Wi-Fi模块在哪的相关图片

苹果手机Wi-Fi模块在哪

这种你最好是用HttpWebRequest或是WebClient来获取,不用自己去分析这些了。直接能得到想的值。

C#两道题

首先在iPhone操作界面中找到“设置”点击进入。

点击“设置”进入后,在左侧看到“Wi-Fi”设置项目了,同样点击进入设置。

在右侧看到可用的Wifi无线网络列表(前提是iPhone附近有无线网络,并且信号范围之内。

在搜索到无线Wifi网络列表中,选择自己创建的或者某些场合的免费Wifi网络,进行连接,如果Wifi网络要密码的话,输入对应的密码。

如果Wifi无线网络信号较好,并且输入了正确的Wifi无线密码后,即可成功连接到Wifi无线网络了,返回后,可以看到在连接的Wifi无线网络列表前已经打上勾了,就开始Wifi无线网络上网了.。

原文地址:http://www.qianchusai.com/tcpclient-10.html

v2rayng局域网共享-70,v2ray 共享给局域网

v2rayng局域网共享-70,v2ray 共享给局域网

鸿恩阁由来-20,鸿恩阁为什么不开放

鸿恩阁由来-20,鸿恩阁为什么不开放

microsoftstickynotes-100

microsoftstickynotes-100

v2ray连接后无法上网-70,v2ray 连接成功 不能上网

v2ray连接后无法上网-70,v2ray 连接成功 不能上网

cantin,餐厅装修效果图

cantin,餐厅装修效果图

辰海-40,光遇打卡景点星辰海

辰海-40,光遇打卡景点星辰海

星梦app-30,星梦棋牌2023官方版-2.13 Inurl:fayunsi

星梦app-30,星梦棋牌2023官方版-2.13 Inurl:fayunsi

四年级下册语文课堂笔记,四年级下册语文课堂笔记第五课

四年级下册语文课堂笔记,四年级下册语文课堂笔记第五课

origin2017打开opju,origin2017打不开opj文件

origin2017打开opju,origin2017打不开opj文件

FIXTURES-90

FIXTURES-90