socket连接联网查询客户端实现方式

本文介绍如何使用Java的Socket类建立客户端连接,通过示例代码`Client04`展示联网查询的基本步骤和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Client04 {


public static void main(String args[]) throws Exception {  

     //为了简单起见,所有的异常都直接往外抛  
    String host = "36.33.227.72";  //要连接的服务端IP地址  
    int port = 5002;   //要连接的服务端对应的监听端口  
    //与服务端建立连接  
    Socket client = new Socket(host, port);  
     //建立连接后就可以往服务端写数据了  
     Writer writer = new OutputStreamWriter(client.getOutputStream(), "UTF-8");
     String data = "<?xmlversion='1.0'encoding=\"UTF-8\"?><Service><Service_Header><service_sn>8010101010019164435</service_sn>                         <service_id>00010090003100</service_id><requester_id>0018</requester_id><branch_id sys_id=\"0001\">801010101</branch_id> <channel_id>01</channel_id><service_time>20130430164435</service_time><version_id>01</version_id><macvalue/><need_request>true</need_request> </Service_Header><Service_Body><request><bankcode>801010101</bankcode><entrustdate>20130430164435</entrustdate> <businesscode>01</businesscode><usercode>1110000</usercode><id>61050219900125821X</id><name>张学</name><nation>汉</nation> <birthday>19900125</birthday><address>陕西西安</address><issueoffice>渭南</issueoffice><validity></validity><photo></photo><photo>男</photo></request> <ext_attributes><T_KEY_LABEL>T0101010</T_KEY_LABEL></ext_attributes></Service_Body></Service>";
     DecimalFormat df = new DecimalFormat("0000000");
     String req_len = df.format(data.getBytes().length);
     writer.write(req_len+data);  
     writer.flush();  
     //写完以后进行读操作  
     System.out.println("------连接正常,开始传输数据---------");
    BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8"));  
     //设置超时间为10秒  
    client.setSoTimeout(10*1000);  
     StringBuffer sb = new StringBuffer();  
     String temp;  
     try {  
        while ((temp=br.readLine()) != null) { 
//            if ((index = temp.indexOf("eof")) != -1) {  
//                sb.append(temp.substring(0, index));  
//                break;  
//            }  
           sb.append(temp);  
        }  
     } catch (SocketTimeoutException e) {  
        System.out.println("数据读取超时。");  
     }  
     System.out.println("服务端: " + sb);  
     writer.close();  
     br.close();  
     client.close();  
  }  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值