C#返回套接字对象
更新代码:C#返回套接字对象,c#,sockets,network-programming,C#,Sockets,Network Programming,更新代码: public static Socket socketConnect() { while (true) { try { Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Console.WriteLine(
public static Socket socketConnect()
{
while (true)
{
try
{
Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Console.WriteLine(sck.Connected.ToString());
IPEndPoint connectAddress = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8000); // Server IP & PORT
sck.Connect(connectAddress);
Console.WriteLine(sck.Connected.ToString());
if (sck.Connected == true)
{
return sck
}
}
catch (Exception ex)
{
System.Threading.Thread.Sleep(1000); // Sleep time before reconnect
}
}
在这种方法之外,我如何使用sck
例如,我想在main中检查sck.Connected是true还是false
是的,我是新来的
现在,每当我想发送或接收socketConnect()时,我都会遇到新问题。发送或接收,然后程序再次执行socketConnect()方法,但我只想使用sck发送和接收
我做错了什么?声明返回套接字的方法
public static Socket socketConnect()
而是break
return sck;
您的sck对象位于堆上,因此返回后仍可以访问。返回套接字而不是void?并对“while(true)”语句进行处理,这样会让您感到悲伤,特别是当你的“catch”不能让你脱离循环时。我还建议你删除while循环,尝试catch,让调用者处理它。这是客户端应用程序,我希望它每隔几秒钟重新连接一次,所以我使用while循环。有更好的方法吗?
,而(true)
在处理网络循环时相当惯用。我不认为这会造成任何痛苦,如果目标真的是永远尝试,那么你还有什么其他选择?我现在有一个新问题,我想使用sck发送或接收,所以我需要编写socketConnect()。发送,然后它返回并执行socketConnect()函数,但我只想使用sck发送或接收我做错了什么?