Java Socket客户端与C#服务端的通信

来源:互联网 发布:惠头条是腾讯软件吗 编辑:程序博客网 时间:2024/05/17 18:41

毕业两个月,大学学的Java,后来因公司业务需要,开始接触android。最近在做个项目要用TCP协议。然后我这边写了个Java客户端Demo跟同事那边的C#服务端进行交互。搞了两天一直是乱码,今天终于解决了,就当给自己做个笔记吧。先把代码贴上。

package com.lrh.tcpclient;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;/** * Created by Administrator on 2017-09-13. */public class Client extends Thread {    public static void main(String[] args) {       try {           //创建Socket对象           Socket socket=new Socket("192.168.1.105",1999);           //根据输入输出流和服务端连接           OutputStream os=socket.getOutputStream();//获取一个输出流,向服务端发送信息           DataOutputStream dos = new DataOutputStream(os);            String sendStr  = "来自客户端的消息:服务端你好";            byte[]bys = sendStr.getBytes("UTF-8");           os.write(bys,0,bys.length);//            socket.shutdownOutput();//关闭输出流           InputStream is=socket.getInputStream();//获取一个输入流,接收服务端的信息           byte buf[] = new byte[1024];           int len = 0;           len = is.read(buf);           while (true) {               try {                   Thread.sleep(3000);               }catch (InterruptedException e){                   e.printStackTrace();               }               System.out.println(new String(buf, 0, len));           }           socket.close();       } catch (UnknownHostException e) {           e.printStackTrace();       } catch (IOException e) {           e.printStackTrace();       }     }}

之前与同事C#服务端通信问题就是在我Java客户端不能正确读取到他那边传过来的数据,然后调试这里写图片描述
然后经过一番百度发现是类型转换与字符编码的问题。其实就是以下几行关键代码

InputStream is=socket.getInputStream();//获取一个输入流,接收服务端的信息           byte buf[] = new byte[1024];           int len = 0;           len = is.read(buf);           System.out.println(new String(buf, 0, len));

发现可以收到C#服务端返回来的信息了
这里写图片描述
这是客户端发到服务端的信息
这里写图片描述
果然出来混总是要还的啊,大学没好好学,现在还是得补回来。要好好学习一下tcp相关的知识了。

阅读全文
0 0
原创粉丝点击