因为设定不同,服务器返回的数据不同,处理的方式也会有所变化。(本文代码是在Android中测试)
下面代码示例为:服务器返回的数据读取时需要使用ASCLL进行转换:
sendData("数据","服务器IP",端口号);//单独开启线程运行
public void sendData(String data,String serverIp,int serverPort) {
try {
Socket socket = new Socket(serverIp, serverPort);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
byte[] buffer = new byte[1024];
String respondString = "";
// 发送数据
out.println(data);
Log.w(TAG,"发送数据: " + data);
InputStream in = socket.getInputStream();
int bytesRead = in.read(buffer);
if (bytesRead > 0) {
Log.w(TAG,"收到服务器响应: " + Arrays.toString(buffer));
for (int q = 0; q < buffer.length ; q++){
//将buffer读取到的ASCLL转换为原本的数据
char c = (char) buffer[q];
respondString = respondString + c;
Log.w(TAG," buffer.length: "+ buffer.length+" buffer : "+ buffer[q] + " 数据:"+c);
if (c == 0){ //服务器中读取到的数据的结尾,即buffer读取为空
break;
}
}
Log.w(TAG,"收到服务器响应: respondString = " + respondString);
}
Log.w(TAG,"close");
// 关闭资源
in.close();
out.close();
socket.close();
} catch (Exception e) {
Log.e(TAG,"socket error : " + e.getMessage());
}
}

1万+

被折叠的 条评论
为什么被折叠?



