TCP/IP协议入门,与viz服务端收发数据

来源:互联网 发布:linux vi定位到某一行 编辑:程序博客网 时间:2024/05/22 20:41

现在已知viz的客户端和服务端可以互通,现在需要重新编写客户端,与服务器进行沟通,先确定服务端的端口,然后进行通信,发现发送出的数据,对方没有吊我。

经验证是没有结束符,c语言中的结束符是用"\n"表示的,所以需要用java模仿C语言发送一个结束符,就新声明一个字节数组byte,里面存入一个0,然后与要发送的命令合并。

通过字节流输出,一开始用的是字符串输出,后来改成直接输出字符数组。其实代码已经好使了,但是发现他还是不返回命令,经点播是没有写接收回复的命令模块,导致对方发送命令,你也无法接收,再添加接收命令代码,完整代码如下:

<span style="font-size:24px;"><span style="white-space:pre"></span>//初始化socket 链接socketSocket client = new Socket("192.168.1.10", 6100);System.out.println("socket=" + client);String sendMess = "15 MAIN VERSION";byte[] by = sendMess.getBytes();//转换为字节数组//这个是用来发送结束符标志的,就是个为0的字节数组而已byte[] by2 = new byte[1];by2[0] = 0;//将by与by2合并,并按照字节数组发送出去。byte[] by3 = new byte[by.length+by2.length];System.arraycopy(by, 0, by3, 0, by.length);System.arraycopy(by2, 0, by3, by.length, by2.length);//直接发送字符数组OutputStream ps =client.getOutputStream();ps.write(by3);ps.flush();//按照字节流接收字节数组byte[] buf = new byte[1024];int len = 0;InputStream input = client.getInputStream();while((len = input.read(buf))!=-1){System.out.println(new String(buf,0,len));}</span>





0 0
原创粉丝点击