记录TCP/UDP 对接其他公司(c语言) socket 方式 的坑
先说明下业务情景:
其他公司做的是 服务端 ,©语言的方式通过socket。来进行数据传出。通过两种协议tcp/udp 。而我这边做的是客户端 ,用的是java开发。
这两者均有坑。再此记录,
1.TCP的坑
客户端 我编写的 代码:
public static String sendTCPRequestNew(String IP, String port, String reqData, String reqCharset){
// TODO Auto-generated method stub
// sendTCPRequest("127.0.0.1","9998","aaaa","UTF");
Socket socket = new Socket();
InputStream ip = null;
PrintWriter printWriter=null;
DataOutputStream out = null;
String str =null;
try {
//定一个ip和端口的socket连接
socket = new Socket(IP, Integer.parseInt(port));
socket.setKeepAlive(true);
socket.setSoTimeout(30000);
//往服务端发送消息
printWriter = new PrintWriter(socket.getOutputStream(), true);
printWriter.println(reqData);
Thread.sleep(900);//休眠一分权钟
// //第二种写入方式
// out = new DataOutputStream(socket.getOutputStream());
out.writeUTF(reqData.getBytes(reqCharset));
// out.writeUTF(reqData);
//接收服务端返回的消息
// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
ip = socket.getInputStream();
log.info("Client接收到的数据: "+ip);
byte[] bytes = new byte[0];
bytes = new byte[ip.available()];
ip.read(bytes);
str = new String(bytes);
log.info("Client接收到的数据str: "+str);
} catch (I