记录TCP/UDP 对接其他公司(c语言) socket 方式 的坑

本文记录了使用Java进行TCP/UDP对接C语言服务端时遇到的问题及解决办法。TCP中,由于连接过早断开导致收不到数据,通过`Thread.sleep()`解决。UDP中,理解服务端的阻塞与非阻塞模式,采用非阻塞接收方式成功对接。
摘要由CSDN通过智能技术生成

记录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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值