高手,您好:
我在写一个Socket通信程序,现在我碰到了一个问题..
在进行Socket通信的时候,我写出了一个C端的测试类,源代码如下:
package s;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class C_port {
Socket s = null;
OutputStream dops = null;
public C_port(){
try {
s = new Socket("127.0.0.1",60000);
dops = new DataOutputStream(s.getOutputStream());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String str = "CJ必胜!!CJCO!!CJHMF,这个问题解决了,我高兴了,今天我建群,加入了130个人\r\n我们群里的人,都决心互相学习,增长本领";
byte[] b = str.getBytes();
int len = b.length;
try {
dops.write(b,0,len);
dops.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new C_port();
}
}
S端的代码如下:
(S端的入口类..)
package s;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class S_port {
String str = "";
ServerSocket s =null;
Socket so = null;
S_port(){
try {
s = new ServerSocket(60000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true){
try {
so = s.accept();
break;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
SystemThread m1 = new SystemThread(so);
m1.start();
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new S_port();
}
}
(S端的子线程..)
package s;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class SystemThread extends Thread{
Socket so = null;
DataInputStream dips = null;
InputStream inputstream = null;
String str = null;
public SystemThread(Socket s){
so = s;
}
public void run(){
byte[] buf = new byte[2048*512];
int num = 0;
try {
inputstream = so.getInputStream();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
while (num != (-1)) {//是否读完所有数据
try {
num = inputstream.read(buf);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//继续从网络中读取文件
}
str = new String(buf);
System.out.println(str);
}
}
高手,经过运行,我的S端的console窗口输出如下:
希望高手能够点拨:
为什么我的C端的写出数据为:
“CJ必胜!!CJCO!!CJHMF,这个问题解决了,我高兴了,今天我建群,加入了130个人\r\n我们群里的人,都决心互相学习,增长本领”.
在我的S端的console窗口中的输出却为:
“我们群里的人,都决心互相学习,增长本领”.
少了前面的:
“CJ必胜!!CJCO!!CJHMF,这个问题解决了,我高兴了,今天我建群,加入了130个人\r\n”.
的字符串数据...
希望高手能够点拨我这个问题出现的原因..
谢谢高手!!
一百分奉上!!
一位求知者