我有一个TcpListener,可以启动
public void Start()
{
if (!Listening && !IsDisposed)
{
_socket.Bind(_localEndpoint);
Task.Run(DoListen);
}
}
private async Task DoListen()
{
_socket.Listen();
Listening = true;
try
{
while (Listening)
{
var socket = await _socket.AcceptAsync().ConfigureAwait(false);
NewConnection?.Invoke(new Connection(socket));
}
}
catch (SocketException e)
{
Stop();
}
finally
{
Listening = false;
}
}
停下来
public void Stop()
{
_socket?.Close();
IsDisposed = true;
Listening = false;
}
如何取消通过调用Start()
启动的任务?
通过使循环条件监听
,我可以确保任务将在条件评估时停止。
然而,这只会发生在接受新连接之后。
我如何摆脱等待var等待_socket。接受Async()。配置等待(false);
?如果关联的套接字在等待AcceptAsync()
时关闭,会发生什么?谢谢你的回答!
使用C的令牌源。然后可以提供取消令牌(cts.Token)到方法DoListing(取消令牌令牌)。
在DoList1中,使用属性IsCenseationReporttedSocket检查同时循环中的取消,并使用AcceptAsync(CenseationToken)方法将令牌传递给Socket。
我最近一直在玩套接字,但是我遇到了一个问题…当我从服务器接收数据时,我得到一个“java.net.套接字异常:套接字关闭”异常。我没有在任何地方关闭套接字,事实上,我唯一使用关闭()的地方是扫描仪上从System.in读取文本; 以下是我的代码: 客户: 服务器: 数据包发送者: 客户端接收器: 数据包接收器:
我正在为客户机发送对象到服务器,在服务器端修改该对象,并将其重新发送到客户机。将对象从客户机发送到服务器很好,它工作正常,但当我将对象发送回来时,它给出了异常,Socket关闭。这里是代码。IntString和ParentObj是我要发送对象的类。 服务器类 用于发送和接收对象的Send_recv类。
问题内容: 我有一个使用简单套接字在两个系统之间传递某些字符的应用程序。我的Java应用程序作为服务器运行。我建立了良好的连接,甚至传递了一条消息。但是,发送完一条消息后,我的连接关闭。 从我可以看出来的好像是在关闭时,套接字本身正在关闭吗?!这很不好,因为我有多个要在同一连接上发送的消息。 我吃饱了吗?如何在Java中维护此连接? 问题答案: 是的,关闭任何作家/读者将关闭他们包装的所有其他作家
如果我不关闭套接字: 客户端没有输出。服务器从不发送消息,或者客户端从不接收消息。 有人知道发生这种情况的可能原因吗?客户端使用一个线程接收消息,一个线程发送消息。客户端套接字在主客户端线程中创建,因此接收者和发送者线程使用当前套接字进行通信。 提前谢了。
**服务器** **客户** 并且我运行它,ip是环回(127.0.0.1),端口是7755。 客户端套接字的对等ip:127.0.0.1 客户端套接字的对等端口6311 -1 0 0 0 我的问题是,如果监听(服务器)套接字只处理客户端的连接,那么它的对等端不应该存在?那个错误的IP和端口是什么?只是垃圾值?
因此,我有一个客户机wich连续发送和接收数据消息,wich工作正常,然而,当我关闭/停止客户机时,我会得到以下单行错误: 尽管我试图关闭插座--最终封闭了。现在我的问题是为什么我会收到这个错误,这个行为是否正常,以及如何正确处理这个错误。下面是我的代码: