Tag: tcp

.NET TCP协议的可靠性如何?

我对C#很新,所以请耐心等待。 我在C#.NET 4.0中编写了一个相对简单的客户端服务器应用程序。 我使用TCP协议,TCPListener和TCPClient更具体。 我知道TCP协议在理论上是如何工作的。 但我必须100%确定在数据传输过程中不会出现(未处理的)错误。 发送数据后如何知道数据是否已成功接收。 我可以完全依赖TCP协议的底层实现吗? 所以我没有必要从另一方确认数据已收到? 至关重要的是,我真正知道哪些数据已发送并成功接收。 我知道这是一个愚蠢的问题,但我真的很想确定。 谢谢你的时间和答案。

序列化对象准备通过TCPClient Stream发送

我已经使用TcpListener和TcpClient设置了服务器和客户端。 我想将一个对象发送到我的服务器应用程序进行处理。 我已经发现了using System.Runtime.Serialization和以下文档 ,但我不想发现我正在以漫长的方式做这件事。 问题:通过TCP流处理和发送对象的最佳方法是什么? 发送和接收。 这是我的对象的一个​​例子: // Create a new house to send house newHouse = new house(); // Set variables newHouse.street = “Mill Lane”; newHouse.postcode = “LO1 BT5”; newHouse.house_number = 11; newHouse.house_id = 1; newHouse.house_town = “London”;

是Stream.Copy管道吗?

假设我正在编写tcp代理代码。 我正在读取传入的流并写入输出流。 我知道Stream.Copy使用缓冲区,但我的问题是:Stream.Copy方法在从输入流中获取下一个块时是否写入输出流,或者它是一个循环,如“从输入读取块,将块写入输出,从输入中读取块等“?

我应该在每次交易后关闭套接字(TCPIP)吗?

我编写了一个实现FileSystemWatcher的TCPIP服务器,并使用从FSW获取的新文件解析的数据填充队列。 单个客户端将连接到此服务器并从队列中请求数据(任何其他客户端都不需要随时连接)。 如果不存在数据,客户端将等待(1秒)并再次尝试。 客户端和服务器都是异步编写的 – 我的问题是:客户端是否应为每个事务创建一个新的套接字(在while循环内),或者只是让套接字保持打开状态(在while循环之外)? client.Connect() while(bCollectData) { … communicate … Thread.Sleep(1000); } client.Shutdown(SocketShutdown.Both); client.Close();

WCF 4rest获取请求的IP?

嘿,你如何得到提出请求的人的IP地址,如下所示: [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] public partial class UsersService { [WebInvoke(UriTemplate = “”, Method = “PUT”)] public User AddNewUser(User newUser) { // code goes here including GETTING AN IP?? } 谢谢!

如何拒绝c#中的连接尝试?

我有一个侦听连接的套接字。 我想要做的是在尝试连接时有一个接受/拒绝选项。 这是我的代码: private void StartListening() { while (running) { AcceptingSocket.Listen(100); Socket client = AcceptingSocket.Accept(); if (IncomingConnection!= null) { TcpEventArgs eventArgs = new TcpEventArgs(client); IncomingConnection(eventArgs); } } } 有没有办法让.Accept检查用户是想接受还是拒绝连接?

通过TcpClient(byte )发送包含特殊字符的字符串

我正在尝试通过TcpClient(byte [])发送包含特殊字符的字符串。 这是一个例子: 客户在文本框中输入“amé” 客户端使用特定编码将字符串转换为byte [] (我已经尝试了所有预定义的加上一些像“iso-8859-1”) 客户端通过TCP发送byte [] 服务器接收并输出使用相同编码重新转换的字符串(到列表框) 编辑: 我忘了提到结果字符串是“我?”。 编辑-2(根据要求,这里是一些代码): @DJKRAZE这里有一些代码: byte[] buffer = Encoding.ASCII.GetBytes(“amé”); (TcpClient)server.Client.Send(buffer); 在服务器端: byte[] buffer = new byte[1024]; Client.Recieve(buffer); string message = Encoding.ASCII.GetString(buffer); ListBox1.Items.Add(message); 列表框中显示的字符串是“am?” ===解决方案=== Encoding encoding = Encoding.GetEncoding(“iso-8859-1”); byte[] message = encoding.GetBytes(“babé”); 更新: 只需使用Encoding.Utf8.GetBytes(“ééé”); 奇迹般有效。

TCP客户端连接

我有一个应用程序,我为我的应用程序分发在整个公司,通过我们的Windows 2003服务器(运行IIS 6.0)向我发送数据。 小文本消息通过,但包含更多数据(大约20 KB)的更大消息无法通过。 我将字节缓冲区设置为TCP客户端的缓冲区大小。 我注意到我的数据正在服务器上收到; 但是,它只通过一次接收例程循环,我的大文件总是与缓冲区大小完全相同,或者我们服务器上的大小为8 KB。 换句话说,我的代码只在服务器关闭套接字连接之前通过一个循环。 考虑到填充整个缓冲区可能存在问题,我尝试将读取/写入限制为仅1 KB,但这只会导致我们的服务器在关闭连接之前收到1 KB后关闭套接字。 我将服务器的错误消息发送回客户端,以便我可以查看它。 我从客户端收到的具体错误消息是: “无法将数据写入传输连接:已建立的连接已被主机中的软件中止。” 我更新了我的服务器应用程序,以便底层TCP Socket将使用“keep alives”与此行: client.Client.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.KeepAlive, true); 现在,每当我尝试发送消息时,客户端都会收到错误: “无法将数据写入传输连接:远程主机强行关闭现有连接。” 我们的网络管理员告诉我他的内部服务器上没有防火墙或任何端口被阻止。 谷歌搜索错误,我发现post暗示人们试图telnet到服务器。 我用他们的方向telnet到服务器,但我不知道如何做出响应: C:> telnet欢迎使用Microsoft Telnet客户端 逃脱角色是’CTRL +]’ Microsoft Telnet> open cpapp 500正在连接到cpapp … 这就是我得到的。 我从来没有得到错误,微软的Telnet屏幕最终会改为“按任意键继续……” – 我想它超时了,但我的代码能以某种方式连接。 我已尝试在代码中通过Telnet尝试其他端口,包括25,80和8080.Telnet启动端口25,但我的应用程序似乎读取第一个循环,无论我告诉它运行什么端口。 这是我在客户端上运行的代码: int sendUsingTcp(string location) { string result = string.Empty; try { using […]

如何设置测试TCP连接超时?

我尝试使用以下代码测试TCP连接。 System.Threading.Thread t = new System.Threading.Thread(() => { using (TcpClient client = new TcpClient()) { client.Connect(ip, Convert.ToInt32(port)); } }); t.Start(); 如果IP或端口无效,如何设置超时?

如何在C#中实现PsPing TCP ping

我试图在C#中实现Mark Russinovich的SysInternals PsPing工具来测量使用TCP ping的延迟。 我不确定它是如何进行ping调用的(显然不使用原始Window套接字,因为它不需要管理员权限来运行)。 我知道hping通过TCP发送SYN数据包并测量响应时间。 什么是准确测量服务器延迟的实现技术,而TCP不会测量页面加载时间,而只测量程序包确认的网络延迟? 这个库有吗? C:\>psping stackoverflow.com:80 PsPing v2.01 – PsPing – ping, latency, bandwidth measurement utility Copyright (C) 2012-2014 Mark Russinovich Sysinternals – www.sysinternals.com Pinging 198.252.206.16 with 32 bytes of data: 5 iterations (warmup 1) ping test: Reply from 198.252.206.16: 81.57ms Reply from 198.252.206.16: 80.81ms Reply from 198.252.206.16: 80.68ms Reply from […]