您的位置:首页 > 编程语言 > C语言/C++

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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐