简体   繁体   English

Java客户端C#服务器发送问题

[英]Java Client C# Server sending issue

I am trying to set up Client-Server communication where C# is the server side and Java is the client side. 我正在尝试建立客户端-服务器通信,其中C#是服务器端,而Java是客户端。 The connection is successful and I am able to send a string from C# to Java. 连接成功,我能够将字符串从C#发送到Java。 However, I am having issues sending a string from Java to C#. 但是,我在从Java向C#发送字符串时遇到问题。 The Server does not get any input. 服务器未获得任何输入。

My code is the following: Server Side C# 我的代码如下:服务器端C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace ServerToJava
{


    class Program
    {
        static void Main(string[] args)
        {

            TcpListener serverSocket = new TcpListener(5678);
            int requestCount = 0;
            TcpClient clientSocket = default(TcpClient);
            serverSocket.Start();
            Console.WriteLine(" >> Server Started");
            clientSocket = serverSocket.AcceptTcpClient();
            Console.WriteLine(" >> Accept connection from client");

            requestCount = 0;
            NetworkStream networkStream = clientSocket.GetStream();


            try
            {
                requestCount = requestCount + 1;

                string serverResponse = "Last Message from client server This is a test";
                Byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse);
                networkStream.Write(sendBytes, 0, sendBytes.Length);          

                Console.Write ("ReadClient Thread started"); 
                int length = networkStream.ReadByte ();
                byte[] buffer = new byte[length];    
                int size = networkStream.ReadByte ();
                byte[] buff = new byte[size];
                  using (var memoryStream = new MemoryStream(buff,false)) {
                    using (var streamReader = new StreamReader(memoryStream, Encoding.UTF8)) {
                var message = streamReader.ReadLine();
                buff = Encoding.UTF8.GetBytes(message);
                networkStream.Read(buffer, 0 ,buffer.Length);
                Console.Write (message);
                networkStream.Flush();
            }

        }

     }
     catch (Exception ex)
    {
    }
    clientSocket.Close();
    serverSocket.Stop();
    Console.WriteLine(" >> exit");
    Console.ReadLine();
        }

    }
}

Client Side Java 客户端Java

 OutputStream out;
            Socket s = new Socket("127.0.0.1", 5678);

            BufferedReader input =
                    new BufferedReader(new InputStreamReader(s.getInputStream()));

            String answer = input.readLine();
            JOptionPane.showMessageDialog(null, answer);
            out= s.getOutputStream();
            out.write('a');
            System.exit(0);

You shouldn't use new TcpListener(5678) it is Obsolete , instead use the following: 您不应使用过时的 new TcpListener(5678) ,而应使用以下代码:

 // Set the TcpListener on port 5678.
  Int32 port = 5678;
  IPAddress localAddr = IPAddress.Parse("127.0.0.1");


  TcpListener server = new TcpListener(localAddr, port);

Source` MSDN 来源MSDN

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM