android平台通过socket向C++服务器端发送数据和接收数据的相关问题
2014-07-04 13:37
579 查看
纠结了两天的问题,今天终于解决了。让一台主机作为服务器进行联调,这样的方法更快捷有效呀。
以下是代码:
String s="***********\0";
//这里的\0是因为服务器端指定发送的消息必须跟着结束符。而直接用println(s)传送时出现错误,因为string 类是没有'0'结束符的。
char[] msg_01=new char[s.length()];
msg_01 = s.toCharArray(); //这里将字符串转换为一个字符数组,而char是有结束符的。服务器能接收到正确的消息并给予回应。
//byte[] msg_03=new byte[100];
//msg_03=s.getBytes();
//将字符串转为字节数组,在本机上观察到的msg_03数据是正确的,但是服务器端接收的数据并不准确。个人认为可能在数据流传输时出现错误,之前看到的demo只有字符串和字符数组的传送,不知道字节数组可不可以。
// 创建socket对象,指定服务器端地址和端口号
//ClientSocket = new Socket(Address, Port);
ClientSocket=new Socket();
ClientSocket.connect(new InetSocketAddress(Address, Port), SOCKET_TIMEOUT);
Isconnect=ClientSocket.isConnected();
//之前不确定通道是否连通,自己加的测试。
if(Isconnect){
mTextView_03.setText("连接成功!");
}
else{ mTextView_03.setText("连接失败!");}
// 获取 Client 端的输出流
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(ClientSocket.getOutputStream())), true);
// 填充信息
out.println(msg_01);
System.out.println("msg=" + s);
// 接受信息
BufferedReader br = new BufferedReader(
new InputStreamReader(ClientSocket.getInputStream()));
String msg_02 = br.readLine();
//如果服务器端发送的数据有加换行符\n,是可以正常接收的。但是服务器设置发送的是没有换行符的,所以接收数据会出现错误,我需要改为一个字符一个字符的接收,没那么方便,悲剧~~
嗯,后来用的是这样的方法:
//char[] m=new char[100];
// br.read(m);
// String msg_02=new String(m);
if (msg_02 != null) {
mTextView_04.setText(msg_02);
} else {
mTextView_04.setText("数据错误!");
}
// 关闭流 和socket
out.close();
br.close();
ClientSocket.close();
以下是代码:
String s="***********\0";
//这里的\0是因为服务器端指定发送的消息必须跟着结束符。而直接用println(s)传送时出现错误,因为string 类是没有'0'结束符的。
char[] msg_01=new char[s.length()];
msg_01 = s.toCharArray(); //这里将字符串转换为一个字符数组,而char是有结束符的。服务器能接收到正确的消息并给予回应。
//byte[] msg_03=new byte[100];
//msg_03=s.getBytes();
//将字符串转为字节数组,在本机上观察到的msg_03数据是正确的,但是服务器端接收的数据并不准确。个人认为可能在数据流传输时出现错误,之前看到的demo只有字符串和字符数组的传送,不知道字节数组可不可以。
// 创建socket对象,指定服务器端地址和端口号
//ClientSocket = new Socket(Address, Port);
ClientSocket=new Socket();
ClientSocket.connect(new InetSocketAddress(Address, Port), SOCKET_TIMEOUT);
Isconnect=ClientSocket.isConnected();
//之前不确定通道是否连通,自己加的测试。
if(Isconnect){
mTextView_03.setText("连接成功!");
}
else{ mTextView_03.setText("连接失败!");}
// 获取 Client 端的输出流
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(ClientSocket.getOutputStream())), true);
// 填充信息
out.println(msg_01);
System.out.println("msg=" + s);
// 接受信息
BufferedReader br = new BufferedReader(
new InputStreamReader(ClientSocket.getInputStream()));
String msg_02 = br.readLine();
//如果服务器端发送的数据有加换行符\n,是可以正常接收的。但是服务器设置发送的是没有换行符的,所以接收数据会出现错误,我需要改为一个字符一个字符的接收,没那么方便,悲剧~~
嗯,后来用的是这样的方法:
//char[] m=new char[100];
// br.read(m);
// String msg_02=new String(m);
if (msg_02 != null) {
mTextView_04.setText(msg_02);
} else {
mTextView_04.setText("数据错误!");
}
// 关闭流 和socket
out.close();
br.close();
ClientSocket.close();
相关文章推荐
- android平台通过socket向C++服务器端发送数据和接收数据的相关问题
- Android Socket 发送与接收数据问题: 发送后的数据接收到总是粘包
- android端和pc端使用usb进行socket通信,其中android是服务器端,pc是客户端。如何实现安卓端输入的数据通过按钮发送到pc端?
- Android Socket 发送与接收数据问题: 发送后的数据接收到总是粘包
- Android客户端通过TCP接收服务器端发送的数据
- Android Socket 发送与接收数据问题: 发送后的数据接收到总是粘包
- Android socket通过UDP的方式发送,接收数据
- Android Socket 发送与接收数据问题: 发送后的数据接收到总是粘包
- 使用DatagramSocket发送、接收数据(Socket之UDP套接字)android遥控器
- Android之通过向WebService服务器发送XML数据获取相关服务
- Android 通过Socket实现手机端向PC发送数据,并接受PC端返回的数据
- Android平台下Socket编程中接收缓冲的问题
- Android socket 使用PrintWriter和BufferedReader发送和接收出现乱码问题解决
- Java中通过TCP协议发送和接收数据-Socket编程
- Android之Socket通信&&Handler 发送接收多条数据
- 通过python下的socket实现组播数据的发送和接收
- Python中使用socket发送HTTP请求数据接收不完整问题解决方法
- android 开发 socket发送会有部分乱码,串码,伴随着数据接收不完整
- java后台接收android客户端通过http方式发送的数据
- 【android学习】android端通过socket接收到数据产生乱码