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

本文介绍了解决C语言客户端与服务端通信时因缺少结束符导致的问题,详细阐述了如何使用Java模拟C语言发送结束符的过程,并给出了完整的代码实现。

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

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

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

<span style="font-size:24px;"><span style="white-space:pre">		</span>//初始化socket 链接socket
		Socket 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>





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值