Tag: tcp

非连接套接字上不允许操作 – C#4.0

它持续出现错误“线路上不允许在非连接套接字上操作” var ServerStream = Connect2Server.GetStream(); 而且我不确定为什么 下面是该函数的其余代码 var buffersize = 0; var Convert2Tet = new ASCIIEncoding(); var Connect2Server = new TcpClient(); var ServerEndPoint = new IPEndPoint(IPAddress.Parse(“127.0.0.1”), 8801); var ServerStream = Connect2Server.GetStream(); Console.WriteLine(“Connecting to Server”); Connect2Server.Connect(ServerEndPoint); var WelcomeMessage = new byte[4096]; ServerStream.Read(WelcomeMessage, 0, 4096); Console.Write(Convert2Tet.GetChars(WelcomeMessage)); var UserCredentials = Console.ReadLine(); buffersize = Convert2Tet.GetByteCount(UserCredentials); var Credentials = new […]

如何在C#中停止一个线程?

我已经创建了一个客户端 – 服务器应用程序,并且在服务器上我希望有机会停止服务器,然后再次启动它。 问题是我无法阻止侦听Tcp连接的线程。 如何在C#中关闭线程? 谢谢。 private void KeepServer(){ while (this.connected) { tcpClient = tls.AcceptTcpClient(); Connection newConnection = new Connection(tcpClient); } }

将UWP App连接到远程SQL Server 2008提供程序:TCP提供程序,错误:0

System.Data.SqlClient.SqlException:’已成功与服务器建立连接,但在登录过程中发生错误。 (提供者:TCP提供者,错误:0 – 操作成功完成)’ 我正在尝试使用UWP APP连接到SQL Server 2008 R2数据库。 远程访问已启用 防火墙规则已到位 目标版本是Windows 10 Fall Creators Update(10.0; Bulid 16299 最小版本是Windows 10 Fall Creators Update(10.0; Bulid 16299 Package.appxmanifest设置为 internetClient internetClientServer privateNetworkClientServer enterpriseAuthentication 码: using System.Data.SqlClient; const string ConnectionString = “SERVER = XXXServer; DATABASE = XXXDatabase; USER ID = XXXUser; PASSWORD = XXXPass”; using (SqlConnection sqlConn = new […]

WAN上的TCP / UDP套接字服务器

我在c#中编写了一个socket服务器,它将用作我所参与的小型游戏项目的基本设计。 套接字服务器在lan上运行良好。 我能够在服务器和客户端之间完全通信。 但是,在WAN上,服务器从客户端接收所有正确的消息,但客户端不从服务器接收消息。 客户端和服务器都在路由器后面,但只有服务器的路由器有端口转发。 当客户端连接到服务器时,我获得连接的IP地址。 由于客户端位于NAT后面,是否需要收集发件人的更多信息? 我假设客户端可以设置端口转发,但这对游戏来说非常适得其反。 我能得到的任何帮助表示赞赏。 如果您需要代码,请告诉我。 提前致谢。 用于从客户端建立TCP连接 public string ConnectionAttempt(string ServeIP, string PlayUsername) { username = PlayUsername; try { connectionClient = new TcpClient(ServeIP,TCP_PORT_NUMBER); connectionClient.GetStream().BeginRead(readbuffer, 0, READ_BUFFER_SIZE, new AsyncCallback(DoRead), null); Login(username); ipAddress = IPAddress.Parse(((IPEndPoint)connectionClient.Client.RemoteEndPoint).Address.ToString()); servIP = new IPEndPoint(ipAddress,65002); listenUDP = new IPEndPoint(ipAddress, 0); UDPListenerThread = new Thread(receiveUDP); UDPListenerThread.IsBackground = true; UDPListenerThread.Start(); […]

通过TCP / .NET SSLStream发送文件很慢/不起作用

我正在编写一个服务器/客户端应用程序,它使用SSL(通过SSLStream ),它必须做很多事情(不仅仅是文件接收/发送)。 目前,它的工作原理是:只有一个连接。 我总是使用SSLStream.WriteLine()从客户端/服务器发送数据并使用SSLStream.WriteLine()接收它,因为我可以通过一个连接发送所有信息,我可以从所有线程发送而不会破坏数据。 现在我想实现文件发送和接收。 与我的客户端/服务器应用程序中的其他内容一样,每条消息都有一个前缀(如cl_files或sth)和base64编码的内容部分(前缀和内容由|分隔)。 我实现了这样的文件共享:上传器向接收器发送关于总文件大小的消息,然后上传者通过前缀r发送文件的base64编码部分。 我的问题是文件共享真的很慢。 我从localhost到localhost大约20KB / s。 我还有另一个问题。 如果我增加文件的base64编码部分的大小(这使文件共享更快),前缀r不再出现给接收器(因此数据无法识别)。 我怎样才能让它更快? 任何帮助将不胜感激。 我的(可能很糟糕的)代码是针对客户的: //its running inside a Thread FileInfo x = new FileInfo(ThreadInfos.Path); long size = x.Length; //gets total size long cursize = 0; FileStream fs = new FileStream(ThreadInfos.Path, FileMode.Open); Int16 readblocks = default(Int16); while (cursize < size) { byte[] buffer = […]

c#tcp端口扫描程序资源

有谁知道任何.Net库或资源将帮助我实现TCP端口扫描程序?

如何validationTCP数据包是否已在C#中收到ACK?

使用阻塞/非阻塞方法发送一些tcp数据后,例如: Socket.Send() or Socket.SendAsync() 我怎么知道我的数据收到了ACK消息? .NET能否知道TCP数据是否已成功发送?

如何在c#中通过TCP连接发送整数数组

我在两台计算机之间建立了一个TCP连接,用于在Windows应用程序中来回发送和接收数据。 我发送的消息是一组转换为字符串并用“,”拆分的整数。 所以,为了发送我使用的数据, if (dataSend.Length > 0) { m_writer.WriteLine(dataSend); m_writer.Flush(); } 其中dataSend是字符串forms的消息,m_writer是StreamWriter。 但是,现在我想通过相同的网络连接将其作为整数数组发送,但我找不到任何东西。 我看到很多人使用字节数组但是我不明白在读取时接收器是如何将字节分成相应的整数的。 我意识到writeline方法也允许Int作为参数,但是如何发送数组呢? 使用字符串很清楚,因为我可以根据“,”分隔数据,因此我知道每个元素的结束位置。 整数数组的分离标准是什么? 如果有人向我解释这一点会很好,因为我对C#的网络方面也很新。 跟进问题: StreamReader不会停止读取C#

如何从服务器上正常关闭套接字

在服务器端,我正在尝试优雅地关闭连接的套接字。 我知道Socket上正确的事件序列应该是: socket使用SocketShutdown.Send选项关闭 loop / wait直到套接字Receive返回0字节 套接字关闭 我有几个问题: 如果Socket.Receive永远不会返回(0字节)怎么办? 我们会不会试图永远关闭套接字? 每当我在服务器上调用Close时,客户端总是会收到“现有连接被远程主机强行关闭”的exception。 我怎样才能让客户通知这个关闭“优雅”? 在服务器上,如果我正在使用Async Begin / EndReceive调用,每当我在套接字上调用Close时,它总是会在Begin / EndReceive线程上导致ObjectDisposedException。 如果没有发生此exception,是否无法关闭套接字?

C#为什么不“刷新”强制网络流中的字节?

我有一个项目,我正在尝试将序列化对象发送到服务器,然后等待“OK”或“ERROR”消息返回。 我似乎遇到了类似的问题: TcpClient发送/关闭问题 问题是,我似乎能够发送原始对象的唯一方法是关闭连接,但然后(当然)我迫不及待地想看看服务器是否成功处理了对象。 private void button4_Click(object sender, EventArgs e) { RequestPacket req = new RequestPacket(); /// … Fill out request packet … /// Connect to the SERVER to send the message… TcpClient Client = new TcpClient(“localhost”, 10287); using (NetworkStream ns = Client.GetStream()) { XmlSerializer xml = new XmlSerializer(typeof(RequestPacket)); xml.Serialize(ns, req); /// NOTE: This doesn’t […]