C#关于发送/接收字节大小的问题(Sockets)
我制作了这些代码以发送和接收带有TCP插座的图像,但接收代码不起作用. 这是发送代码: public void SendImage() { int ScreenWidth = Screen.GetBounds(new Point(0, 0)).Width; int ScreenHeight = Screen.GetBounds(new Point(0, 0)).Height; Bitmap bmpScreenShot = new Bitmap(ScreenWidth, ScreenHeight); Graphics gfx = Graphics.FromImage((Image)bmpScreenShot); gfx.CopyFromScreen(0, 0, 0, 0, new Size(ScreenWidth, ScreenHeight)); bmpScreenShot.Save(Application.StartupPat
6 2024-04-26
编程技术问答社区
套接字客户/服务器应用程序在互联网上不工作,尽管已打开端口
我已经使用C#.NET插座编程了TCP/IP服务器.使用本地网络可以正常工作,但是当我尝试通过Internet使用它时,客户端无法连接到服务器. 我敢肯定,我已经在路由器和Windows防火墙(既包括客户端和服务器)中打开了端口(14999),我还将计算机端口14999映射到了路由器上的一个. 即使这样,我也得到了"现有公司 远程主机强行关闭了nnection. 我注意到了一件事. 当我将服务器与Visual Studio进行调试时,并且使用 http://http://www. YougetSignal.com/tools/open-ports/要检查14999端口,该代码登上了断点. 我一直被我们陷入困境,有人知道我该怎么办吗? 非常感谢大家! 这是我的客户端应用代码: using System; using System.Collections.Generic; using System.Linq; using System.Text;
12 2024-04-26
编程技术问答社区
简单的 TcpListener 挂接
这是我正在尝试的代码:(这仅是为了学习TCP的工作原理.)在我的PC上: listener = new TcpListener(IPAddress.Any, 3000); listener.Start(); using (TcpClient client = listener.AcceptTcpClient()) ... 以及在ASP.NET按钮的事件处理程序中的服务器上: using (var wc = new MyWebClient()) { byte[] received = wc.UploadData("http://my ip here:3000", new byte[] { 1 }); Label1.Text = Encoding.UTF8.GetString(received); } 我禁用所有防火墙,在PC上运行第一个代码,然后单击页面的按钮(在浏览器中)运行第二个代码. 第一个只是等待其最后一行.为什么?它应该收到请求.
12 2024-04-26
编程技术问答社区
插座服务器一直在听
需求是服务器套接字应一直接受客户端连接(Windows Service应用程序).以下是几个小时正常工作的代码,但是一段时间后接受根本不起作用.为了保持接受,我还拥有每10分钟连接服务器的线程.通过这种方式,我知道服务器插座在一段时间后停止(几个小时) public void StartReceiveNotification() { if (!isStarted) { try { byte[] bytes = new Byte[1024]; var ips = Dns.GetHostAddresses(Dns.GetHostName()); var myAddress = ips.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork); assigningIp
6 2024-04-26
编程技术问答社区
在java和c#应用程序之间进行套接字通信
我有两个应用程序,一个用Java编写,另一个用C#编写.我正在尝试将Java应用程序的字符串发送到C#应用. 我发送字符串的Java代码如下: String response; try { DataOutputStream outToServer = new DataOutputStream(outGoingSocket.getOutputStream()); BufferedReader inFromServer = new BufferedReader(new InputStreamReader(outGoingSocket.getInputStream())); outToServer.writeBytes(message + '\n'); outToServer.flush(); response = inFromServer.readLine(); System.out.print
16 2024-04-26
编程技术问答社区
接收多个不同的消息 TcpListener C#
嗨,我一直在尝试学习如何使用TCPLISTENER和套接字在客户端服务器之间发送一些简单的短信.我已经阅读了许多似乎正在显示如何读取_ buffer的线程,以确保循环以确保读取整个消息.但是,我似乎无法弄清楚如何在收到第一条消息之后获得第二个消息.我可以很好地连接到服务器,我可以收到第一条消息.但是,如果我再次点击客户端上的"发送"按钮,则没有消息到服务器.这是我的代码: // SERVER APPLICATION: ----------------------------------------------- namespace TCP_Server { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnStartServer_Click(
12 2024-04-26
编程技术问答社区
在我所有的IP上发送一个UDP组播数据包
我正在尝试在所有网络接口(2 LAN,一个WiFi)上发送多播数据包.我首先遵循此教程. 我遇到的问题是,该数据包似乎只有我的一个IP地址之一. 这是我当前的代码. private static void SendOnAllCards(int port, String address) { using (Socket mSendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { mSendSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse(address)));
16 2024-04-26
编程技术问答社区
在 system.net.socket 中接收数据的实际方式
我使用多螺纹异步套接字从XDOMAINREQUEST接收数据.到目前为止,我对接收数据没有问题,但我不喜欢当前这样做的方式.所以我想知道是否有一个更好的主意. 这是我的状态对象: public class StateObject { public Socket workSocket = null; public const int BufferSize = 256; public byte[] buffer = new byte[BufferSize]; public StringBuilder sb = new StringBuilder(); // stores total byte length which comes from XDomainRequest public int totalReceivedBuffer = 0; // stores byte lenght comes when each cal
8 2024-04-26
编程技术问答社区
UDP客户只收到1条信息
我有一个我当前正在处理的服务器客户端应用程序.服务器在WAN上接收数据罚款,并且客户端似乎接收数据,但客户端仅接收一个通信. WAN上是否有任何使客户始终仅接收第一个返回UDP通信,而后续的则没有.谢谢您的帮助. 客户端UDP听力代码 private void receiveUDP() { System.Net.IPEndPoint test = new System.Net.IPEndPoint(System.Net.IPAddress.Any,UDP_PORT_NUMBER); System.Net.EndPoint serverIP = (System.Net.EndPoint)test; server.Bind(serverIP); //server.Ttl = 50; EndPoint RemoteServ = (EndPoint)listenUDP; do
14 2024-04-26
编程技术问答社区
C# TCP客户端监听数据
我想连接到工作中的特定条形码读取器,但目前我面临一些问题,以了解TCP流读数如何与C#一起使用. 我在Stackoverflow上寻找了许多代码示例,正如我所看到的,人们经常打开连接,发送命令然后要求答复. 重点是,条形码读取器只接受TCP连接,然后与我的数据一起发送数据. 我想找到使用TCPCLIENT或NetworkStream以连续方式读取数据的最有效方法.我的意思是,我想在传入时聆听数据,但同时又处理了许多其他事情. 我在想知道简单的TCP库是否像具有连接函数的库一样,当您接收数据时触发事件(带有定界符或长度). 谢谢 解决方案 我终于找到了一个简单的TCP库,称为 simpletcp .我可以使用以下代码行连接到我的网络条形码读取器:g_Client.Connect(ip, port); 然后有一个可用的事件,称为datareceived(g_Client.DataReceived += l_Client_DataReceived;)
12 2024-04-26
编程技术问答社区
通过C#套接字正确发送和接收?
我正在尝试使用C#创建远程桌面服务器和客户端.服务器捕获屏幕,然后通过插座将其发送给客户端.我正在使用下面的代码,尽管它仅在客户端上显示JPEG图像的一部分.我认为这是因为该图像以多个数据包发送,而目前代码仅读取一个数据包并显示它.任何人都可以解释如何更改代码,以便在显示之前会收到多个数据包(整个图像). 服务器代码: Socket serverSocket; Socket clientSocket; public Form1() { InitializeComponent(); backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { try { serverSocket = new Socket(AddressFamily.InterNetwork,
14 2024-04-26
编程技术问答社区
通过套接字发送序列化的对象
是将消息格式化到服务器的最佳方法,暂时我使用二进制构造者串行一个对象,然后将其发送到服务器. 在服务器上以异步方式聆听,然后当收到的缓冲区大小不是100%时,假设传输已完成. 这是有效的,当时我可以在另一端进行对象,我只是担心,如果我开始发送异步,此方法将失败. 我知道我需要以某种方式标记消息,说这是消息的结尾,另一个位属于消息2,但我不确定正确的方法. 任何人都可以向我指出正确的方向,也许给我一些例子? 谢谢 解决方案 您可以始终将其序列化为内存流,查看其大小,将长度发送为4字节二进制号,然后发送流的内容. 在另一侧,您可以坐下来等待4个字节,将它们组合到整数中,然后坐下并等待该数字的字节. 当您的读取函数返回(使它们阻止读取)时,您知道您将整个对象都放入缓冲区中,因此您只需将其拆下并将其施放到您的常见接口类型中. 编辑:这是您特定问题的答案.据说,使用更高级别的库比纯TCP更好. 其他解决方案 如果您的对象具有固定的长度
6 2024-04-26
编程技术问答社区
在C#中通过TCP Socket发送/接收图像
我试图将图像发送给连接到我的TCP Listner(服务器)的客户端.我成功地通过网络发送和接收文本,但我无法从服务器将图片发送给客户端.我想不喜欢放置在客户端窗口中的图片框中的图片. 这是我用来发送和接收文本的代码,但不是图片 服务器: 接收器: void TListner() { try { IPEndPoint ipendp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080); TcpListener tl = new TcpListener(ipendp); tl.Start(); Socket s1 = tl.AcceptSocket(); ; NetworkStream ns = new NetworkStream(s1);
6 2024-04-26
编程技术问答社区
在WINDOWS7 64BIT中连接插座的问题
嘿.我一直在寻找解决这个问题的解决方案,没有运气.我想知道,将插座代码从Winxp 32位切换到Win7 64位时,这是否是一个已知问题.我有一个相当简单的套接字例程,在winxp 32bit中运行良好,但是插座.连接呼叫正在抛出"无法建立连接,因为目标机积极拒绝了它127.0.0.1:48000" > 我已经在该程序的Win7防火墙中添加了一个例外,并进行了两倍检查以确保其添加的规则允许所有端口. 我用来设置这些简单插座的代码如下: 听力插座: byte[] bytes = new Byte[8192]; IPHostEntry ipHostInfo = Dns.GetHostEntry("localhost"); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 48000); _ListenerSocket
10 2024-04-26
编程技术问答社区
发送和接收一个图像文件 C#
我已经挣扎了一段时间,以通过插座发送图像文件.我相信我非常接近,但是我还没有得到它.我正在尝试将图像从服务器发送到客户端. 这是我的服务器代码: //Init listener listener = new TcpListener(new IPEndPoint(IPAddress.Any, 550)); //Start listening for connections listener.Start(); Console.WriteLine("Waiting for connection"); s = listener.AcceptSocket(); //If we reach here, we have a connection Console.WriteLine("Connected"); //Get the screenshot and apply it to our memory stream img = new Bitmap(Screen.PrimaryScree
6 2024-04-26
编程技术问答社区
为什么我不能再向监听套接字发送?
我正在为C#中的在线游戏编写一个简单的代理(更多数据包记录器). 基本登录过程是这样的: client->服务器:登录数据包 - 我的代理接收数据包,显示并将其发送到服务器. 服务器 - >客户端:连接!数据包 - 我的代理再次收到数据包,它也再次显示它,但是当试图将其发送给客户时,它说: "由于未连接插座,并且(使用sendto呼叫在数据报套接字上发送时,请求发送或接收数据的请求),没有提供地址." 我的代码: http://lesderid.pastebin.com/nkey.com/nkey.nkey.7qqp 解决方案 171: listenSocket.Send(RecvBuffer2); 您不应该尝试发送此听力插座.您需要发送使用Endaccept()创建的套接字. (您的代码中的winsock2-但是您需要以不同的方式范围.) 其他解决方案 侦听TCP插座具有一个功能 - 接受客户端连接.该连接将占据a 新套接字描述符,即为每个新客户
8 2024-04-26
编程技术问答社区
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(
10 2024-04-26
编程技术问答社区
发行版中的无效程序例外(.NET 4.6.1)
我有一个程序,可以异步处理套接字通信.我一直在释放构建(在构建机上)中才发生的例外.导致问题的代码确实是开始侦听传入插座连接的常规程序: public async Task Listen() { try { var endpoint = new IPEndPoint(IPAddress.Loopback, Port); using (Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { Socket.Bind(endpoint); Socket.Listen(Limit); while (!Shutdown) {
6 2024-04-26
编程技术问答社区
使用套接字连接将图像从java传输到c#的问题
我在我的PC(客户端)上的Raspberry Pi和c#程序上有一个java程序(服务器).我想将图像从覆盆子上的摄像头连续传输到我的c#程序.我找到了如何通过套接字连接连接java和c#的代码.我的Java代码: public static void Start() { new Thread(() -> { while (true) { try { System.out.println("waiting for connection"); Socket socket = server.accept(); InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(
14 2024-04-26
编程技术问答社区
异步套接字阻塞的UI线程
有关某些上下文,请参阅我的上一个问题: socke冻结UI线程 问题与客户端有关,连接到服务器或发送没有问题,但是当称为" OnReceive"方法时,整个客户端停止响应.时间为30秒+).其余的电话运行良好,但UI无法做出回应.服务器也响应良好. StateObject类: class StateObject { // Client socket. public Socket workSocket = null; // Size of receive buffer. public const int BufferSize = 256; // Receive buffer. public byte[] buffer = new byte[BufferSize]; // Received data string. public Stri
8 2024-04-26
编程技术问答社区