Java服务器和C#客户端(可以';t交换数据)

Java服务器和C#客户端(可以';t交换数据),java,c#,Java,C#,我最近开始学习java。我在写一个android应用程序,带有“聊天”功能。我想要一个java聊天服务器,客户端代码将来自C。这是Java服务器代码 import java.net.*; import java.io.*; public class server { private Socket socket = null; private ServerSocket server = null; private DataInputStream streamI

我最近开始学习java。我在写一个android应用程序,带有“聊天”功能。我想要一个java聊天服务器,客户端代码将来自C。这是Java服务器代码

    import java.net.*;
import java.io.*;


public class server 
{
    private Socket socket = null;
    private ServerSocket server = null;
    private DataInputStream streamIn = null;
    private DataOutputStream streamOut = null;

    public server(int port)
    {
        try
        {
            System.out.println("Binding to port " + port + ", please wait ...");
            server = new ServerSocket(port);
            System.out.println("Server started: " + server);
            System.out.println("Waiting for a client ...");
            socket = server.accept();
            System.out.println("Client accepted: " + socket);



            open(); // Custom method
            boolean done = false;
            while(!done)
            {
                try
                {
                    String line = streamIn.readUTF();
                    System.out.println(line);
                    done = line.equals(".bye");
                }
                catch(IOException ioe)
                {
                    done = true;
                }
            }
            close();
        }
        catch(IOException ioe)
        {
            System.out.println(ioe);
        }

    }

    private void close() throws IOException
    {
        if (socket != null) socket.close();
        if(streamIn != null) streamIn.close();
    }

    public void open() throws IOException
    {
        streamIn = new DataInputStream(new  BufferedInputStream(socket.getInputStream()));
        //streamOut = new DataOutputStream(socket.getOutputStream());
        //streamOut.writeUTF("Hello");
        //streamOut.flush();
        //System.out.println("Message sent");
    }

    public static void main(String args[])
    {
        server ss = null;
        if(args.length != 1)
        {
            System.out.println("Usage: java ChatServer port");
        }
        else
        {
            ss = new server(Integer.parseInt(args[0]));
        }
    }

}
上面的代码是使用eclipse运行的,我在C#客户端应用程序中使用了networkstream和StreamReader,但我可以使用TCPClient连接到服务器,但StreamReader或networkstream无法工作

C#代码

私有静态TcpClient客户端;
私有静态二进制编写器;
private const int MAX_BUFFER_SIZE=1024;
私有静态void Main(字符串[]args)
{
尝试
{
Console.WriteLine(“连接到服务器”);
client=新的TcpClient();
client.Connect(“127.0.0.1”,8888);
writer=newbinarywriter(client.GetStream());
Console.WriteLine(“连接到服务器”);
Console.WriteLine(“发送hello world”);
WriteString(作家,“你好,世界!”);
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
Console.Read();
}
公共静态void WriteString(BinaryWriter os,字符串值)
{
if(值!=null)
{
byte[]数组=System.Text.Encoding.Unicode.GetBytes(值);
WriteBuffer(操作系统、阵列);
}
其他的
{
写入(os,0);
}
}
公共静态void WriteBuffer(二进制编写器操作系统,字节[]数组)
{
如果((array!=null)&&&(array.Length>0)&(array.Length
以上代码来自 我也在堆栈中找到了一些使用networkstream的代码,但我没有找到运气。我已经使用StreamWriter/reader编写了一个C#聊天应用程序。谢谢你的帮助。服务器可以正常工作,java客户端可以很好地使用它。(我对C#有点经验,但对Java没有经验)

谢谢

编辑:-我发现这与类使用的编码不同有关。

我让它工作了。我在java codeHi@Aimkiller中使用了StreamReader和Writer,并使用了BufferedReader/Writer,我正在尝试使用Android Studio和C#中的客户端创建一个java服务器,我希望它们都能发送和接收数据,但我没有使我的工作正常,我在从客户端到服务器读取数据时遇到了问题。我想知道你是否有一个完整的服务器和客户端的样本,以便我可以使我的工作。谢谢。@bernzkie抱歉耽搁了。不幸的是,我不记得我最后做了什么。我试图在android应用程序中实现java代码,以便通过它接收一些信息。我离开了学校,因为我必须为考试而学习。获取我的代码并查看我在堆栈中找到的链接。这样会更好。@bernzkie dude请确保使用相同的编码。我使用UTF-8编码,它工作得很好,我让它工作了。我在java codeHi@Aimkiller中使用了StreamReader和Writer,并使用了BufferedReader/Writer,我正在尝试使用Android Studio和C#中的客户端创建一个java服务器,我希望它们都能发送和接收数据,但我没有使我的工作正常,我在从客户端到服务器读取数据时遇到了问题。我想知道你是否有一个完整的服务器和客户端的样本,以便我可以使我的工作。谢谢。@bernzkie抱歉耽搁了。不幸的是,我不记得我最后做了什么。我试图在android应用程序中实现java代码,以便通过它接收一些信息。我离开了学校,因为我必须为考试而学习。获取我的代码并查看我在堆栈中找到的链接。这样会更好。@bernzkie dude请确保使用相同的编码。我使用UTF-8编码,效果很好
private static TcpClient client;
private static BinaryWriter writer;
private const int MAX_BUFFER_SIZE = 1024;

private static void Main(string[] args)
{
    try
    {
        Console.WriteLine("Connecting to the server");
        client = new TcpClient();
        client.Connect("127.0.0.1", 8888);
        writer = new BinaryWriter(client.GetStream());
        Console.WriteLine("Connected to the server");
        Console.WriteLine("Sending hello world");

        WriteString(writer, "Hello World!");

    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

    Console.Read();
}

public static void WriteString(BinaryWriter os, string value)
{
    if (value != null)
    {
        byte[] array = System.Text.Encoding.Unicode.GetBytes(value);
        WriteBuffer(os, array);
    }
    else
    {
        WriteInt(os, 0);
    }
}

public static void WriteBuffer(BinaryWriter os, byte[] array)
{
    if ((array != null) && (array.Length > 0) && (array.Length <  MAX_BUFFER_SIZE))
    {
        WriteInt(os, array.Length);
        os.Write(array);
    }
    else
    {
        WriteInt(os, 0);
    }
}

public static void WriteInt(BinaryWriter outStream, int value)
{
    byte[] buffer = BitConverter.GetBytes(value);

    outStream.Write(buffer);
}