Tag: tcp

套接字编程

好吧,我已经绞尽脑汁,无法找到解决方案。 这里的问题是我能够调用begin-receive一次,但之后我无法找到一种适当的技术,可以一次又一次地调用该方法。 因此,虽然正在建立连接,但消息可以只接收一次,之后不再接收..请帮助,因为它非常紧急。谢谢你。 我在这里放下整个代码。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.IO; using.System.Threading; namespace WindowsApplication1 { public partial class lanmessenger : Form { Socket client; Socket newSock, server, hostSock, remote; byte[] receiveBuffer = new byte[1024]; byte[] sendBuffer = new byte[1024]; String […]

使用C#列出使用的TCP端口

这是我的问题的答案。 如何在C#中列出绑定/使用的TCP端口。 使用jro修改过的代码 static void ListUsedTCPPort(ref ArrayList usedPort) { IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); IPEndPoint[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpListeners(); IEnumerator myEnum = tcpConnInfoArray.GetEnumerator(); while (myEnum.MoveNext()) { IPEndPoint TCPInfo = (IPEndPoint)myEnum.Current; usedPort.Add(TCPInfo.Port); } } 原始问题。 这就是我使用C#列出TCP端口的方法。 它是我在这个论坛中找到的修改后的代码(忘了我到底的确切位置。如果你是原始开发者,请通知我并将应付信用点放到应有的位置。) //List used tcp port static void ListUsedTCPPort(ref ArrayList usedPort) { IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); TcpConnectionInformation[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections(); IEnumerator myEnum = […]

TcpClient未连接到远程服务器

我正在尝试使用TcpClient类连接到远程计算机,但它仍然失败: System.dll中出现未处理的“System.Net.Sockets.SocketException”类型exception 附加信息:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应 在客户端和服务器本地工作时测试代码,但是当我尝试连接到远程计算机时,它不再起作用。 这是服务器代码: using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Net.WebSockets; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace WebSocketServer { class Program { static void Main(string[] args) { Console.WriteLine(“Starting a new WebSockets server.”); WebSocketServer server = new WebSocketServer(); Console.WriteLine(“The WebSocket server has started.”); bool userRequestedShutdown […]

使用TCP的C#Mutlti-threading文件传输

我正在设计用于从客户端接收文件的TCP服务器。 它为一个客户工作。 但Server需要响应多个客户端。 我不知道如何同时从客户端接收多个文件。 请帮我。 服务器代码: public partial class Form1 : Form { Thread t1; int flag = 0; string receivedPath = “yok”; public delegate void MyDelegate(); private string fileName; public Form1() { t1 = new Thread(new ThreadStart(StartListening)); t1.Start(); InitializeComponent(); } public class StateObject { // Client socket. public Socket workSocket = null; public const […]

.net中的高性能TCP客户端

在SO上看到的很多关于.Net套接字的好post都是围绕编写可扩展的高性能服务器。 C#中的高性能TCP服务器 如何编写可扩展的基于Tcp / Ip的服务器 虽然这些post非常好,但在编写高性能TCP客户端应用程序时需要关注的核心内容是什么? 高性能客户端的方案是将请求流式传输到服务器并以非阻塞方式处理响应的应用程序。 这样的客户端还应该有可靠的断开检测策略。 为了进一步澄清,我们无法控制服务器端。 我们只需要一个服务器端点即可连接。 注释中提到的zmqNet是一个很棒的库,但我认为它最强(或意味着案例)连接的两端都使用zmq(true?)。

套接字术语 – “阻塞”是什么意思?

在C#中讨论套接字编程时,阻塞这个术语是什么意思? 我需要构建一个服务器组件(可能是一个Windows服务),它将接收数据,进行一些处理并将数据返回给调用者。 呼叫者可以等待回复,但我需要确保多个客户端可以同时呼叫。 如果客户端1连接并且我说10秒钟来处理他们的请求,那么套接字是否会在2秒后阻止客户端2呼叫? 或者服务是否会在另一个线程上开始处理第二个请求? 总之,我的客户可以等待响应,但我必须能够同时处理多个请求。

如何从Socket获取IP地址

我想获得一个绑定到receiveSock的IP地址。 我怎么才能得到它。 问题1: ipEndReceive = new IPEndPoint(IPAddress.Any, receivePort); receiveSock = new Socket(AddressFamily.InterNetwork , SocketType.Stream, ProtocolType.Tcp); receiveSock.Bind(ipEndReceive); 当代码达到Bindfunction时。 发生错误 无效参数,错误代码:10022,消息:提供了无效参数 问题2: ipEndReceive = new IPEndPoint(IPAddress.Parse(“127.0.0.1”), receivePort); receiveSock = new Socket(AddressFamily.InterNetwork , SocketType.Stream, ProtocolType.Tcp); receiveSock.Bind(ipEndReceive); ErrorLog.WritetoErrorlog(“\nRemote IP Address : ” + ((IPEndPoint)receiveSock.RemoteEndPoint).Address.ToString() 当我尝试这个IP。 它向我显示了与上面相同的错误

C#P2P聊天应用程序设计

我想创建一个不使用显式服务器的简单聊天应用程序。 主要要求是用户可以同时与许多朋友聊天(就像在Skype等上一样)。 我不是说这里的会议聊天,只是多个单独的聊天窗口。 目前,我只想要一个局域网消息传递应用程序,但我很欣赏,如果设计很容易扩展到Internet连接。 我想知道什么样的设计适合这种应用。 您如何看待解决方案,其中每个用户应用程序都有一个TcpListener (隐式服务器)和多个TcpClient对象 – 一个用于他/她正在TcpListener交谈的每个朋友。 如何validation远程用户? 聊天应用程序是否应该生成证书(X509或某事物)或者只是假设局域网中的用户是可信任的:) 最亲切的问候,

如何以二进制帧格式发送数据(TCP)

我需要将数据流传输到TCP服务器并且之前已经完成了。 数据应采用二进制帧格式。 我用Google搜索并找到了我认为我需要做的教程: http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient(v=vs.71).aspx 但我不知道如何以所需的格式创建数据,因此我可以以正确的方式发送它。 它应该采用以下格式: Field|Offset| Type | size(octets) id | 0 |unsign int| 1 name | 1 |Byte Array| 40 grade| 41 |sign float| 8 例: Field| Data | InBytes | id | 133 | 133 | name | 247 | 247 0 | grade| 0 | 0 | 什么是数据类型我应该存储int,字节数组,浮点数以及在哪里指定偏移和大小,最后应该如何发送到服务器(在示例中它们只发送一个字节数组)。 AC #-如何使用上面提供的链接中的代码发送这样的数据的示例将是值得赞赏的。

为什么streamreader连接到网络流在ReadLine()上返回null?

在下面的代码中,我有一个从网络流中读取的StreamReader。 这段代码通常可以运行好几天。 我遇到了一个问题,突然StreamReader.ReadLine()开始返回null。 根据Microsoft文档,StreamReader.ReadLine()在到达输入流的末尾时将返回null。 当底层流是NetworkStream时,这对我没有意义。 ReadLine()不应该阻塞直到网络流接收数据? 这是我第一次遇到这个问题而我无法复制它。 什么可能导致这个? 背景信息:应用程序从电话交换机接收CDR记录。 电话交换机连接到应用程序并发送普通的旧文本记录。 在交换机连接后,它将保持连接并继续发送永久记录,除非出现故障。 private void ProcessClient(TcpClient client) { try { using (NetworkStream stream = client.GetStream()) { using (StreamReader reader = new StreamReader(stream)) { //continue processing while service is on while (m_RunService & client.Connected) { string curLine = reader.ReadLine(); //code here does stuff to string //will catch any […]