我用下面的代码做的tcp client,发出去12345,
可是抓包发现,data里12345后每次都多0d0a两个字符,
为什么啊
请帮忙! Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
String hostName = new String("zerox"); // using hostname to get
try {
echoSocket = new Socket(hostName, 6993);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
}
catch (UnknownHostException e) {
System.err.println("Don't know about host: " + hostName);
System.exit(1);
}
catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection to: " + hostName);
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
out.println("12345");//发字符
}
out.close();
in.close(); stdIn.close();
echoSocket.close();另外我应该怎么封装一个buf给out.println()函数呢?
请高手给点提示好吗?小的刚学java,以前都是做c++的
谢谢
可是抓包发现,data里12345后每次都多0d0a两个字符,
为什么啊
请帮忙! Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
String hostName = new String("zerox"); // using hostname to get
try {
echoSocket = new Socket(hostName, 6993);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
}
catch (UnknownHostException e) {
System.err.println("Don't know about host: " + hostName);
System.exit(1);
}
catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection to: " + hostName);
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
out.println("12345");//发字符
}
out.close();
in.close(); stdIn.close();
echoSocket.close();另外我应该怎么封装一个buf给out.println()函数呢?
请高手给点提示好吗?小的刚学java,以前都是做c++的
谢谢
解决方案 »
- 求教JAVA如何将txt文件的大量数据内容导入到mysql中
- 关于Java中repaint()的问题
- 发布到内网的web应用,怎么样让外网访问,有人说用花生壳,大家还有什么好办法?
- java执行sql server的select count的效率,怎么样写,效率最高?
- 关于Java的类方法~疑惑
- 哪位大侠能推荐几本学习java的好书籍
- 自动换行问题,急啊!
- 鉴于scjp的模拟题大部分没有答案或不是很准确,我打算做个网站大家一起做题,同意者跟贴
- 谁有可用的winRoute 的s/n么?
- 求教:如何编制一个applet程序,不用每次都下载,就象activeX一样,除非版本更新,否则下在一次即可。
- 真是诡异问题!!!晕死!!机器有毛病??
- 如何由string类型的类名生成类的实例?
请问我该如何封装数据发出去了,当然是不要回车换行。
能发出去,而且没有回车换行。
我想问一下:一次flush发一次包吗?
比如
out.print("12345");
out.print("6789");
out.flush();
我抓包看到就是一个包,data里面有123456789还有我听说网络都用byte类型发送比较好,
我封装了一个byte[],但是print()没有print(byte[])函数,
我该如何封装一个包呢。
out.flush();
out.print("6789");
out.flush();
应该就可以发两个包了。直接用echoSocket.getOutputStream()得到的OutputStream可以发byte[]
字符串流和字节流。字符串流可以处理多国语言的字符,包括DBCS,Unicode;
字节流不行,只能以字节为单位。
你的out是个字符串流,当然无法print(byte[])了。
就象楼上说的,直接用echoSocket.getOutputStream(),这个是字节流,发byte数组就没问题。
但字节流发数据时,如果你的数据是汉语,或这是浮点数,就需要你自己把它们转换
成字节数组了。
多看看书吧,其实这些比较简单,只不过你不清楚时,感觉很乱。
每个人都经历过这个阶段,加油吧,没问题的。
print和println的区别没问题了吧。
已经无话可说了
UP