Android套接字编程

时间:2011-08-11 03:58:18

标签: android sockets udp

我正在做一个android套接字编程。但是,我得到一些发送和接收问题。请帮忙。

服务器:我使用Visual Studio C ++运行它 客户端:Android客户端

当我在下面使用时

Socket socket = new Socket(dstName,dstPort);        
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
printWriter.println(method);

它可以将消息发送到服务器。然而, 当我使用OutputStreamWriter时,它无法发送到服务器。

问题1: OutputStreamWriter和PrintWriter之间有什么区别?

另一方面,我将创建一个UDP套接字。所以,我正在使用DatagramSocket

DatagramSocket udpSocket = new DatagramSocket();
byte[]outBuf = "this is a text".getBytes();
DatagramPacket dataPacket = new DatagramPacket(outBuf, outBuf.length);
dataPacket.setAddress(InetAddress.getByName(dstName));
dataPacket.setPort(dstPort);
dataPacket.setLength(outBuf.length);
udpSocket.send(dataPacket);

它也无法到达服务器。

问题2: 为什么DatagramSocket和OutputStreamWriter无法将数据发送到我的本地服务器?只有带有Socket的printWriter才能到达它?

非常感谢

3 个答案:

答案 0 :(得分:0)

您的服务器似乎期望为每条消息添加新行。 PrintWriter.println()发送一个(顾名思义)。使用OutputStreamWriter,您必须明确发送换行符。

答案 1 :(得分:0)

通过这个班级建立联系;它将返回套接字。

public class ChatApplication extends Application {

    private Socket mSocket;
    {
        try {
            mSocket = IO.socket(Constants.CHAT_SERVER_URL);
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }

    public Socket getSocket() {
        return mSocket;
    }
}

答案 2 :(得分:0)

Outputstream是字节流,其中Writer是字符流。 使用Writer,我们可以控制编码风格。

PrintWriter wrtr = new PrintWriter(new OutputStreamWriter(output, "UTF-8"));