C# WCF TCP Error code 10060 & 10061 Problem

Permalänk
Medlem

C# WCF TCP Error code 10060 & 10061 Problem

Hej,
har precis börjat koda för WCF(Windows Communication Foundation) igen och som vanligt så har det uppstått ett problem. Får nämligen TCP Error Code 10060 när någon försöker ansluta till min server, och TCP Error Code 10061 när jag försöker koppla upp mig lokalt - fast med min externa IP-Adress.
Har försökt klura ut vad tusan felet kan vara men lyckas helt enkelt inte.
Har lagt upp en tråd på Stackoverflow för den som är intresserad.

TCP Error Code 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond IP-Adress:3100. TCP Error Code 10061: No connection could be made because the target machine actively refused it.

Servern:

svh = new ServiceHost(typeof(ServiceAssembly.ServiceImplementation)); NetTcpBinding tcpBinding = new NetTcpBinding(); tcpBinding.MaxConnections = 100; tcpBinding.MaxBufferPoolSize = (int)4096; tcpBinding.MaxBufferSize = 4096; tcpBinding.MaxReceivedMessageSize = (int)4096; tcpBinding.TransactionFlow = false; tcpBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign; tcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; tcpBinding.Security.Mode = SecurityMode.None; svh.AddServiceEndpoint( typeof(ServiceAssembly.IChat), tcpBinding, "net.tcp://localhost:3100/MyService"); SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()); Console.WriteLine("Starting server..."); try { svh.Open(); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); }

Klienten:

public string m_ipAdress = "XX.XXX.XXX.XXX"; string m_port = "3100"; DuplexChannelFactory<IChat> scf; IChat s; private void login_btn_Click(object sender, RoutedEventArgs e) { Callback callback = new Callback(); InstanceContext context = new InstanceContext(callback); NetTcpBinding tcpBinding = new NetTcpBinding(); tcpBinding.MaxConnections = 100; tcpBinding.MaxBufferPoolSize = (int)4096; tcpBinding.MaxBufferSize = 4096; tcpBinding.MaxReceivedMessageSize = (int)4096; tcpBinding.TransactionFlow = false; tcpBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign; tcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; tcpBinding.Security.Mode = SecurityMode.None; scf = new DuplexChannelFactory<IChat>(context, tcpBinding, "net.tcp://" + m_ipAdress + ":" + m_port + "/MyService"); s = scf.CreateChannel(); try { s.Connect(); } catch (Exception ex) { MessageBox.Show("ERROR: " + ex.Message); } }

Är tacksam för all hjälp jag kan få.. så sjukt irriterande bara.

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem

Har inte koll på WCF men du skriver "net.tcp://localhost:3100/MyService");
den bilder väl porten på localhost.
Har du testat att ändra till ditt externa ip? Finns kanske någon inställning som binder på alla ip-adresser och

Permalänk
Medlem
Skrivet av Pake:

Har inte koll på WCF men du skriver "net.tcp://localhost:3100/MyService");
den bilder väl porten på localhost.
Har du testat att ändra till ditt externa ip? Finns kanske någon inställning som binder på alla ip-adresser och

Anledningen till att jag skriver localhost är för att få rätt lokal ip-adress. Detta är serverns endpoint, d.v.s den IP/port som servern lyssnar på inkommande trafik.

Klienten däremot skriver den externa ip-adressen för att koppla upp sig mot denna adress.

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem

Suck.. tydligen så kan jag inte använda localhost som serverns endpoint, utan nätverkskortets lokala ip-adress, d.v.s 192.168.1.150.
Allt fungerar nu förutom att varje meddelande postas X-antal gånger (x = antal anslutna klienter) men det är lätt att fixa

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem
Skrivet av Pamudas:

Hej,
TCP Error Code 10061 när jag försöker koppla upp mig lokalt - fast med min externa IP-Adress.

Skulle väl kunna vara för att din router inte har stöd för NAT loopback.

Annars rent spontant, kolla brandväggen och att porten du skall använda inte är upptagen med: netstat -a

Är inte en erfaren utvecklare, särskilt med C# och med WCF. Men verkar vara server/dator problem, kanske med typen av tjänst(service) du sätter upp som inte systemet tillåter.

Permalänk
Medlem
Skrivet av VexedRelic:

Skulle väl kunna vara för att din router inte har stöd för NAT loopback.

Annars rent spontant, kolla brandväggen och att porten du skall använda inte är upptagen med: netstat -a

Är inte en erfaren utvecklare, särskilt med C# och med WCF. Men verkar vara server/dator problem, kanske med typen av tjänst(service) du sätter upp som inte systemet tillåter.

Var tydligen min lokala ip-adress som servern satt sin endpoint på som inte var korrekt. Trodde localhost (127.0.0.1) var densamma som 192.168.150 i mitt fall.

Kan däremot inte koppla upp mig mot min externa IP, har portsharing på då både servern och klienten tar upp samma port (duplex uppkoppling) så det ska inte vara fallet. NAT loopback? Ska kolla upp det. Min router är förövrigt Huawei B593s-22 (4G modem från Tele2)

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB