我正在做一个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才能到达它?
非常感谢
答案 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"));