使用套接字发送和接收byte[]

3

在我的代码中我有 Socket socket=new Socket(ipAddress, port);, 我需要通过这个socket发送byte[]并接收byte[]. 那么如何做到呢?我该使用哪些封装器(我总是发送byte[] 和 接收byte[])?


1
请查看以下 Stack Overflow 问题:https://dev59.com/jnE85IYBdhLWcg3wOw7r - Suresh Kumar
4个回答

7
请查看有关从套接字读写的教程。
要将字节数组写入套接字,您需要:
byte[] message = ...;
Socket socket=new Socket(ipAddress, port);
OutputStream socketOutputStream = socket.getOutputStream();
socketOutputStream.write(message);

类似地,要进行读取操作,您需要使用socket.getInputStream方法。


4
你不需要使用包装器。只需在套接字对象上调用 getInputStream()getOutputStream()。返回的对象具有 read(byte[])write(byte[]) 方法。请注意考虑 read(byte[]) 的返回值(它返回实际读取的字节数)。

3
在服务器端,创建一个新的 ServerSocket 并在套接字对象上调用 accept() 来接受传入连接。(您可能希望在新线程中处理新连接的会话,以避免阻塞主线程。)
在客户端,创建一个新的 Socket 并使用服务器的地址和端口调用 connect() 来启动连接。

1
使用此代码。
public static byte[] sendandrecive(byte[] message)
{
    byte[] real = null;

    try
    {
        Socket s=new Socket("192.9.200.4",2775);
        DataInputStream dis=new DataInputStream(s.getInputStream());  
        DataOutputStream dout=new DataOutputStream(s.getOutputStream());  

        dout.write(message, 0, message.length);
        dout.flush();  

        //dout.close();  

        byte[] data = new byte[1000];
        int count = dis.read(data);
        real =new byte[count+1];
        for(int i=1;i<=count;i++)
        real[i]=data[i];

        s.close();
        System.out.println("ok");

        }

    catch(Exception e)
    {
        System.out.println(e);
    }
    return real;  
}

2
嗨,一些解释会显著提高您的答案质量。 - mrun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接