Tag: tcp

如何通过c#中的socket发送文件

我有服务器和客户端控制台应用程序,可以很好地进行通信以及发送一些字符 这是代码…… 服务器 public static void Main() { try { IPAddress ipAd = IPAddress.Parse(“127.0.0.1”); /* Initializes the Listener */ TcpListener myList = new TcpListener(ipAd, 1234); /* Start Listeneting at the specified port */ myList.Start(); Console.WriteLine(“The server is running at port 8001…”); Console.WriteLine(“The local End point is :” + myList.LocalEndpoint); Console.WriteLine(“Waiting for a connection…..”); Socket s […]

使用.net监控传入/传出的http流量

我想编写一个小应用程序,它可以:1。监视通过Web浏览器请求的URL和/或2.监视本地计算机上的传入http响应 我一直在做一些谷歌搜索,但我没有找到任何明确的答案。 我想也许是System.Net.Sockets.TCPListener并且搞乱它,但我的印象是它不是我正在寻找或不能处理这两件事。 我不需要详细的逐步解释。 只是一个小概述将是有帮助的(如果这是可能的),例如(使用什么类,要订阅什么事件,实例化必要对象所需的任何其他细节)我可以谷歌细节。

NetworkStream和TcpClient有多少缓冲区?

我们正在编写TCPServer和Client程序。 TcpClient缓冲区有多少空间? 比如,它会在什么时候开始丢弃数据? 我们正在尝试确定TcpClient是否可以阻塞,或者它是否应该进入它自己的后台线程(以便缓冲区无法填满)。

使用TCP时,是否需要使用校验和来保护我的消息?

使用TCP作为网络协议,在通过网络发送消息之前,我将每个消息的大小(以及可能的校验和?)加上前缀。 我想知道,计算和传输消息的校验和是否有意义,以确保消息将被传送(如果和何时传送)不变,例如由于某些网络错误。 目前我在发送消息之前发送消息的4字节大小+ 2字节校验和(CRC-16)。 另一个端点正确识别预期的消息长度,读取它并validation校验和。 我知道TCP有内部数据包validation机制,我有一种强烈的感觉,我在应用程序级别的消息validation是多余的,但我不确定,在做出决定之前需要你的建议。 我正在开发客户端 – 服务器应用程序,每天有数万个与服务器的潜在连接。 即使任何消息中的单个损坏字节也可能导致交换不正确消息的整个链,这是不可接受的(好吧,几乎所有客户端 – 服务器应用程序都有相同的要求,不是它们)。 所以我想确定 – 我能安全地信任TCP的内部可靠性,还是提供自己的校验和validation机制更好。 我说的是小的,两个字节的校验和(CRC-16),我不是在谈论数字签名消息等等(并且系统是使用套接字在.Net(C#)中开发的,如果这有任何区别的话) 。

服务器套接字挂起在Close_Wait中

方案如下: 我从我的C#服务器应用程序向客户端发送大量数据。 突然数据流停止,客户端没有数据更新,端口被阻止。 发生这种情况时,服务器端的症状是 Close_Wait在该端口(netstat) 操作将阻止(错误代码:135)在日志中。 无法从客户端建立新连接。 Telnet失败到该端口 目前,我们会在出现问题时重新启动服务器。 显然这不是一个解决方案。 有人能为Windows Server 2008中的Close_Wait中的服务器套接字提供解决方案吗? 对此场景的任何建议都将不胜感激。 提前致谢。

使用C#获取应用程序打开的所有TCP连接

如何查找特定应用程序打开的所有tcp连接,可能是进程ID或smth。 像这样? 我用C#

TcpClient-如何连接到外部IP地址?

我一直在尝试设置一个基本场景,其中TcpClient连接到同一台机器上的TcpListener ,但到目前为止它只适用于127.0.0.1和192.168.XY 这是我的代码: var server = new TcpListener(IPAddress.Any, 51328); server.Start(); var client = new TcpClient(); client.ConnectAsync(IPAddress.Parse(“address from whatismyip”), 51328); server.AcceptTcpClient(); // hangs indefinitely here Console.ReadKey(); 我从whatismyip得到了我的外部地址,但我不确定我是否正确地做了。 我的程序有什么不对吗?

Socket.BeginReceive合并TCP数据包

是否有一个设置我可以用来防止将多个TCP数据包合并到Socket.BeginReceive回调中的单个缓冲区? 你的下意识反应是我无法阻止TCP分裂/合并数据,但这不是我要求的 ; 我可以清楚地看到在Wireshark中收到的各个数据包,我唯一关心的是延迟,即一旦到达就处理该段。 这并不意味着我不知道如何处理拆分/合并段,但这意味着我想避免延迟。 我的代码如下所示: void WaitForData(ISocketInfo soc) { if (socket != null && socket.Connected) socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, OnPacketReceived, socket); } void OnPacketReceived(IAsyncResult asyn) { try { var socket = (ISocketInfo)asyn.AsyncState; numberOfBytesReceived = socket.EndReceive(asyn); if (numberOfBytesReceived > 0) { _queue.Enqueue(buffer, 0, numberOfBytesReceived); OnNewDataReceived(); } WaitForData(socketInfo); } catch (SocketException ex) { Log.Warn(“Socket error while […]

我如何知道我的电脑是否未连接到网络?

我正在制作局域网聊天应用程序(服务器和客户端程序),我想知道如何获得自己计算机的IP地址(对于服务器程序)并找到了这个问题 。 我在我的程序中使用了代码并测试了它,而我的计算机没有连接到互联网,LAN或任何外部设备,我认为代码会因此而抛出exception(并且意味着我的计算机没有连接任何网络)…但它没有,而是返回了一个IP地址。 有没有办法找出我的电脑是否没有连接到任何网络?

ACM Stream转换exception显示AcmNotPossible

当从服务器解压缩Mp3的帧时,在Mp3播放10到15秒时发生上述exception。我的应用程序是客户端/服务器应用程序。我通过编写Mp3数据包并通过网络流序列化来发送Mp3帧。我使用NAudio Open Source API来压缩和解压缩帧并播放Mp3.I使用Stack Trace获得以下exception。 NAudio.MmException.Try(MmResult结果,字符串函数) at NAudio.Wave.Compression.AcmStreamHeader.Convert(Int32 bytesToConvert,Int32&sourceBytesConverted) at NAudio.Wave.Compression.AcmStream.Convert(Int32 bytesToConvert,Int32&sourceBytesConverted) 在NAudio.Wave.AcmMp3FrameDecompressor.DecompressFrame(Mp3Frame帧,Byte [] dest,Int32 destOffset) 在Client.Audio.SoundPlayer.StreamMP3(对象状态)