TCP服务器得到????????,而不是真正的信息。
该服务器用C#编写,并且与C#中的客户端正确配合使用,现在我正在尝试制作Android客户端,但是服务器没有获得真实消息,它只会获得很多问题标记. 这是服务器 TcpListener listen = new TcpListener(IPAddress.Any, 1200); TcpClient client; listen.Start(); client = listen.AcceptTcpClient(); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[client.ReceiveBufferSize]; int data = stream.Read(buffer, 0, client.ReceiveBufferSize); string message = Encoding.Unicode.GetString(buffer, 0, data); Console.WriteLine(
18 2024-04-26
编程技术问答社区
同时从同一个SslStream中读取?
我目前正在读取SSLSTREAM的XML数据.该流来自TCPCLIENT对象. using (XmlReader r = XmlReader.Create(sslStream, new XmlReaderSettings() { Async = true })) { while (await r.ReadAsync()) { ResetStream = false; switch (r.NodeType) { case XmlNodeType.XmlDeclaration: ... break; case XmlNodeType.Element: ... 此外,我想直接读取TCPClient的每一点和字节,无论是否是XML数据.如何阅读同一流两次?是否可以使用XMLRead
10 2024-04-26
编程技术问答社区
多个客户的文件传输,一个服务器
我是使用C#的Windows套接字编程的新手,我想创建一个用一台服务器在多个客户端运行的应用程序.服务器将等待从客户端的传入连接,并为每个连接分配一个新端口. 服务器应接受来自多个客户端的文件传输.传输文件约为10-20 mb. 我浏览了许多教程和示例,但它们确实以一对一的模式转移.我能够将多个客户端连接到一台服务器并通过它发送文本.服务器正在接受客户端连接及其发送的短信,但我不知道以相同的模式传输文件. 如果有任何教程,示例或指南可以帮助我了解从多个客户端转移到单个服务器的文件. 解决方案 实际上很容易 将传入的连接保存在数组中. 启动一个新线程,该线程从套接字获取数据并将其放入输出缓冲区(请确保它的线程安全),这就是IT 编辑18-6-2014 这是我网络类中的C ++示例,这不是完美的,但是您会得到这个想法 M_ClientList是我保存连接的向量 DWORD WINAPI Network::ServerAcceptConnections(LPVOID
14 2024-04-26
编程技术问答社区
.Net TcpClient和SMTPClient无法连接到我的SMTP服务器
我有一种应该连接到SMTP服务器的方法,以查看它是否在线.在测试许多邮件服务器时,此方法可行,但并非全部.代码在下面,但是故障发生在... 上 client.connect(strmailserver,intport); ...在与服务器交谈的逻辑之前.它根本不会连接.我已经绝对确定自己连接了正确的IP和端口(25),并且我使用了MxToolbox之类的第三方网站来成功测试同一服务器IP.该服务器正在从万维网接收正常流量...仅.NET似乎无法连接.我已经审查了防火墙规则,并用Wireshark观看了服务器上发生了什么,但是我从未看到测试运行中的任何传入数据包.设置了防火墙,以允许从任何人(任何人)上所有接口上的端口25连接. 我还使用smtpclient运行下面显示的类似测试,也会失败. var client = new System.Net.Mail.SmtpClient(strMailServer, intPort);
14 2024-04-26
编程技术问答社区
从TcpClient.GetStream()读取而不知道长度
我正在制定TCP基础通信协议.我所知 有很多方法可以确定何时结束阅读. 关闭消息末尾的连接 将消息的长度放在数据本身之前 使用分离器;在普通数据中永远不会发生的某些值(或以某种方式逃脱) 通常,我正在尝试通过WiFi网络发送文件(这可能是不稳定且低速) RSA和AES通信的原因我不喜欢每次关闭连接(不能使用1 ) 这是一个我无法预测其长度的大文件,所以我无法采取行动 作为方法(不能使用2 ) 在阅读和逃脱时,在写作需要大量过程时检查并逃脱了一些东西(不能使用3 ) 此方法应与C#和Java兼容. 您的建议? 更一般的问题: 如何识别Java InputStream的终点/p> c#-tcpclient-tcpclient-检测流的末端? 更多的iformation 我正在编码TCP客户端服务器通信 首先,服务器生成并将RSA公共代码发送给客户端. 然后,客户端将生成AES(键,iv)并使用RSA加密发送回去.
8 2024-04-26
编程技术问答社区
TCP客户端连接使程序冻结
我想在IP +端口上有异步连续ping请求. 问题是,当目标服务器离线时,整个程序会在请求时间冻结.但这不应该发生. 这是我的ping函数,在启动程序时被称为一次. 它应该每3秒钟发出一次PING请求. public async void Start(string ip) { Stopwatch watch = new Stopwatch(); while (true) { watch.Restart(); using (TcpClient tcp = new TcpClient()) { //try to connect to a closed port IAsyncResult res = tcp.ConnectAsync("127.0.0.1", 1234);
14 2024-04-26
编程技术问答社区
TcpClient-如何连接到一个外部IP地址?
我一直在尝试设置一个基本方案,其中a TcpClient在同一台计算机上连接到TcpListener,但到目前为止,它仅适用于127.0.0.1和192.168.X.Y.这是我的代码: 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(); 我从 whatemyip 中获得了外部地址,但我不确定我是否正确地进行了操作.我的过程不正确吗? 解决方案 我假设您正在尝试通过Internet连接?如果您是通过像Comcast这样的互联网提供商连接的
10 2024-04-26
编程技术问答社区
如何使用ASP.NET和C#来管理大量的TCP连接
我有一个连接到第三方服务器的应用程序,我们称其为server-a.我得到了四个不同的端口,即 4000、40001、40002、40003.在每个端口上,我可以创建20个连接,以便我可以使用Server-A创建80个总连接.我想创建一个服务层,该服务层应与上述端口上的ServerA通信.该技术将是ASP.NET C#. 问题语句 1-申请应无障碍/异步每天招待10至2000万个请求 2-每当服务层启动时,就会在每个端口创建20个连接. (总共80个连接) 2-所有连接都应保持连接/活着24/7,并在任何连接下降/断开连接时重新连接.它将在空闲时间发送心跳消息. 我的问题 如何管理这些连接?当TCP插座成功时,我应该将它们添加到一个静态列表中吗? 我怎么知道某个连接被删除/断开连接? 如何在不同端口上发送某些请求?假设如果A 上发送A> b在端口4000上发送它 我该如何使其异步? 对于初始启动,我在单个端口上创建了一个单个TCP连接,并且可以
10 2024-04-26
编程技术问答社区
为什么在改变源代码后,服务器停止了响应?
我需要通过TCP实现HTTP协议.我已经有一个非常好的TCP/IP客户端服务器程序. 现在,我对源代码进行了一些较小的更改,因此它的行为为 http client-server .但是,不幸的是它停止工作. 以下代码... public void Write(string str) { if (IsConnected) { byte[] strBytes = Encoding.UTF8.GetBytes(str); byte[] lenBytes = BitConverter.GetBytes(strBytes.Length); Array.Reverse(lenBytes); writer.Write(lenBytes); writer.Write(strBytes); writ
12 2024-04-26
编程技术问答社区
通过NetworkStream发送消息和文件
我是网络编程的新手,我对此代码有一些问题: if (client.Connected) { ChangeLabel("Mit dem Server verbunden..."); NetworkStream stream = client.GetStream(); FileStream fs = null; try { fs = new FileStream("Mapeditor2.exe", FileMode.Create); } catch (Exception e) { MessageBox.Show(e.Me
8 2024-04-25
编程技术问答社区
通过TCP传递JSON数据,套接字编程c#
我创建了一个桌面软件服务器系统,该系统接受客户端的字符串并插入数据库,这是服务器代码 public class TcpServer { public TcpListener _server; public Boolean _isRunning; Data_connection dbobject = new Data_connection(); SQLiteConnection SQLconnect = new SQLiteConnection(); Window win; public DataTable dt_stored; public List connected_users; public TcpServer(int port,Window _win) { win = _win; _server = new TcpListener(IPAddress.A
24 2024-04-25
编程技术问答社区
是否可以检测插座是否处于近距离状态?
我正在使用TcpClient对象发送和接收数据.当客户端失去连接时,我可以通过使用TCPVIEW看到其关联的连接处于CLOSE_WAIT状态.在C#中可以看到插座状态吗?我只想检测CLOSE_WAIT状态,这样我就可以关闭服务器端的套接字.我知道我可以等待一定时间接收字节,然后在没有收到的情况下关闭连接.我宁愿立即关闭插座及其线程.是否可以在C#侧检测到插座状态? TCPView程序可以确定这一点. C#程序可以执行此操作吗? 解决方案 这不是理想的,但是如果您检查 socket.Available ,它将抛出SocketException.但是,您仍然需要检查原因. 也不是理想的,因为它有点笨拙,是为了调用 Poll() (带有SelectRead).如果它返回true,则可以读取数据或关闭连接.如果没有数据要读,那就是您的答案.
14 2024-04-25
编程技术问答社区
多线程的TcpClient在长时间打开连接后发送超时
我在连接长时间打开(几个小时或过夜)后,在多线程应用程序中使用发送超时的TCPCLIENT关闭.网络流由两个线程,一个UI线程和背景线程使用.有一个用于读取传入数据的流读器,以及用于传出数据的流词器.流程阅读器仅访问过一个线程(背景一个),但是流媒体词被UI线程和背景线程访问. 发生的事情是,如果我打开连接并连接到远程服务器,我可以立即发送和接收数据而没有任何问题.我没有任何发送超时,并且数据已正确发送和接收.但是,如果然后走开,几个小时不发送任何数据,然后返回并开始发送数据(如果有助于使其有意义,这是一个聊天应用程序),则套接字将超时发送.在我走开的那段时间里,所有接收数据都没有问题.此外,有效连接的远程服务器轮询,我的客户端必须对此做出响应,并且由于连接开放了几个小时,因此必须正确发送响应.但是,这种投票响应仅在背景线程上发送.我输入的数据是从UI线程发送的,这就是超时发生的地方. 我猜这与并发访问有关,但是我无法弄清楚是什么原因导致了它的原因,以及为什么我最初可以从UI
12 2024-04-25
编程技术问答社区
网络流媒体BeginRead / EndRead
我真的是C#编程的新手,我正在开发基于TCPCLIENT的应用程序. 我想知道如何使用BeginRead&Endread,我已经阅读了MSN文档,但没有帮助. 我这个: private void Send() { TcpClient _client = new TcpClient("host", 80); NetworkStream ns = _client.GetStream(); ns.Flush(); / ... ns.Write(buffer, 0, buffer.Length); int BUFFER_SIZE = 1024; byte[] received = new byte[BUFFER_SIZE]; ns.BeginRead(received, 0, 0, new AsyncCallback(OnBeginR
12 2024-04-25
编程技术问答社区
当证书是在HSM中的证书和PrivateKey未嵌入证书中时,如何进行AUTHENTICATEASSERVER,而私有键则无法从HSM中提取
我想根据我的代码询问Qusetion,我的代码像bellow: 在AuthentIcateasServer中,我得到"服务器模式SSL必须使用带有关联的私钥的证书" 错误,因为privateKey不在我的证书中,并且私有键也不可从HSM中提取,请您凝固我什么?解决方案是吗? static void ProcessClient(TcpClient client) { SslStream sslClientStream = new SslStream(client.GetStream(), true, AllowAnyServerCertificate, null, EncryptionPolicy.RequireEncryption); try { X509Certificate2 _HsmserverCertificate = null; string pkcs11
8 2024-04-25
编程技术问答社区
ASP.net中的TCP客户端
我正在尝试从ASP Web应用程序连接到TCP服务器.我使用C#中的应用程序进行了此操作,现在我想看看它是否会从Web浏览器工作. 我的代码是: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Net; using System.Net.Sockets; namespace TcpWebClient { public partial class _Default : System.Web.UI.Page { private by
12 2024-04-25
编程技术问答社区
使用套接字回应客户?
我有两个基本的控制台应用程序,即使所有通信都在我的本地计算机上进行. 客户端代码: public static void Main() { while (true) { try { TcpClient client = new TcpClient(); client.Connect("127.0.0.1", 500); Console.WriteLine("Connected."); byte[] data = ASCIIEncoding.ASCII.GetBytes(new FeederRequest("test", TableType.Event).GetXmlRequest().ToString()); Console.WriteLine("Sending data.....");
16 2024-04-25
编程技术问答社区
.NET的NetworkStream关闭了,如何确保所有的数据都被读取?
我有一个打开的TCP连接,并使用NetworkStream.BeginRead()读取.一旦连接在任一端都关闭后,调用了回调,流对象是没有用的 - 就像文档所说的那样,EndRead()抛出ioexception或ObjectDisposedException,具体在这种情况下终止连接. . 它是否可以保证仅在最后一个成功的Endread(和重新读取)和断开连接之间我没有任何数据,尤其是在我最后做的情况下?如果不是这样,如果我要关闭连接的目的结束,则在断开连接时必须手动networkStream.read.()确保没有任何内容,请未留下任何内容? 解决方案 在这种情况下要使用的模式是使用BeginRead读取流(就像您在做的一样)并处理回调方法中的"更多数据". 回调方法调用EndRead并从流中收集读取的数据(通常是通过将其附加到StringBuilder实例上),然后调用开始再次阅读.一旦EndRead返回0字节,您就可以保证从流中读取没有更多的数据. 这是您
12 2024-04-25
编程技术问答社区
TCPClient没有读取传入的数据
我正在处理一个C#应用程序,该应用程序通过TCP/IP连接到主机以发送,然后使用TCPCLIENT流接收响应. 问题是我可以使用stream.write(...)发送数据,但是当我尝试通过调用stream.read.read(...)来获得已发送数据的响应时,它会悬挂而永不返回./p> 我已经检查了网络嗅探工具,例如Wire-Shark,可以看到我的网络接口正在接收到主机的数据.为什么我的tcpclient不会读取此数据? Wireshark显示的收到数据的十六进制从00开始,这是否意味着一个无效的字符,为TCPCLIENT造成了问题吗? 00-1D-4F-FB-43-4B-00-1D-7E-3A-9A-9A-08-08-00-45-00-00-00-34 这是写作的代码... myTcpClient = new TcpClient(); myTcpClient.Connect("192.168.0.194", 1958); Stream myTCPStr
10 2024-04-25
编程技术问答社区
比较NetworkStream发送到/来自服务器的值
当您知道为什么已发送的字符串" kamote"到服务器,而从服务器接收的" kamote"的字符串不相同. 客户端 tcpClient = new TcpClient(); tcpClient.Connect(ServerIP, Port); connectionState = (HandShake("kamote", tcpClient)) ? "Connected to " + ServerIP.ToString() : "Host unreachable."; private bool HandShake(String str, TcpClient tcpClient) { using (NetworkStream ns = tcpClient.GetStream()) { byte[] toServer = Encoding.ASCII.GetBytes(str);
8 2024-04-24
编程技术问答社区