当前位置: 首页 > 知识库问答 >
问题:

C#tcp套接字服务器客户端连接

傅彬
2023-03-14

真的需要你帮忙。

我的项目是通过电缆连接两台PC机,并使用tcp套接字将客户端文本框形式的字符串发送到服务器。问题是ATI只能发送一个字符串,然后连接就会关闭。

       String str = textBox2.Text;
       Stream stm = tcpclnt.GetStream();

        ASCIIEncoding asen = new ASCIIEncoding();
    byte[] ba = asen.GetBytes(str);
 textBox1.Text="Sending...";

 stm.Write(ba,0,ba.Length);

  byte[] bb = new byte[100];
  int k = stm.Read(bb,0,100);

 for (int i = 0;i < k; i++)
 {
  Console.Write(Convert.ToChar(bb[i]));
  }


    tcpclnt.Close();

 //////////////
   int k = 0;
   byte[] b = new byte[100];
   for (; ; )
   {
       for (int i = 0; i < 100000; i++)
       { }
           k = s.Receive(b);
       MessageBox.Show(k + "");
       textBox1.Text = "Recieved...";

       for (int i = 0; i < k; i++)
       {
           textBox2.Text = textBox2.Text + Convert.ToChar(b[i]);
       }
       MessageBox.Show(k + "");
       ASCIIEncoding asen = new ASCIIEncoding();
       s.Send(asen.GetBytes("Automatic message:" + "String received by server!"));
       textBox1.Text = "\n Automatic message sent!";


       MessageBox.Show(k + "");
     s.Close();
       }

注意:某个端口上的连接将在表单加载中建立并成功。

共有1个答案

艾修然
2023-03-14

首先,将close移出For循环

   int k = 0;
   byte[] b = new byte[100];
   for (; ; )
   {
       for (int i = 0; i < 100000; i++)
       { }
       k = s.Receive(b);
       MessageBox.Show(k + "");
       textBox1.Text = "Recieved...";

       for (int i = 0; i < k; i++)
       {
           textBox2.Text = textBox2.Text + Convert.ToChar(b[i]);
       }
       MessageBox.Show(k + "");
       ASCIIEncoding asen = new ASCIIEncoding();
       s.Send(asen.GetBytes("Automatic message:" + "String received by server!"));
       textBox1.Text = "\n Automatic message sent!";


       MessageBox.Show(k + "");
     }
     s.Close();
 类似资料:
  • Java: 在C#中-它停止在“receiver=listener.accept();”在java(android)中-它停止于“sender_socket=new Socket(serverAddr,SERVERPORT);”这应该是java套接字函数的问题--需要另一个函数连接到C#-server。

  • 我试图用java实现一个客户端服务器,在这里我读取客户端中的输入并在服务器中执行UperCase,然后返回客户端并打印UperCase。我使用ObjectOutputStream和ObjectInputStream进行读写,但是当我在客户机中键入一个msg时,程序会显示以下错误: Digite uma msg casa java.io.eofexception位于java.io.datainput

  • 首先我要感谢你花时间... 我在macbook中用C++创建了一个服务器套接字,在运行windows XP的不同机器中用Java创建了一个客户机/套接字。我已将端口指定为5000,但无法指定正确的主机,因此无法进行连接。当我在windows xp中使用WinSock2创建一个C++服务器/套接字时,当我使用本地主机时,连接是完美的...有什么想法吗??? 提前Thnx int main(int a

  • 我们收到了这段代码,应该对其进行修改,以便无论何时客户端连接到服务器并发送消息,服务器都应该回复我听到了,伙计。这适用于一个或多个客户机,但下一个任务是,当新客户机连接时,服务器应该告诉所有其他已连接的客户机。 我以为这会很容易,但结果并不像我想象的那样。由于服务器总是得到sock 3,第一个客户端得到4,第二个客户端得到5等等,所以我尝试创建一个for循环,每当一个新客户端连接时,该循环就会向4

  • 问题内容: 我有一个C ++服务器和两个客户端(红宝石和Java)。一切都在64位linux机器(java 1.7.0_17)上运行。ruby客户端可以正常工作,但是java版本会出现问题。 在Java中,我尝试将字符串从客户端发送到服务器。实际上,服务器收到了整个字符串,但是服务器认为还有更多东西要接收。 红宝石客户端看起来像这样: 这里的一切工作正常。红宝石客户端发送一个字符串。服务器接收该字

  • 我有两个真实的IP地址220.xx.xxx.xxx在我的工作场所。我试着做了一个简单的java tcp服务器程序和android tcp客户端程序。Android客户端正常工作时: 服务器和仿真器程序在同一台pc上。 一台具有真实IP地址的电脑中的服务器位于另一台具有真实IP地址的电脑中 服务器和仿真器都位于同一台pc或不同pc或设备的专用网络下 在以下情况下不工作: 客户端是一个具有wifi或3