高手,您好:
我在做一个通信程序,现在我利用“字节流”写出了一个“防止EOFException异常”的Lib类.
并且,我进行了测试,源代码如下:
(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();
SystemThread m1 = new SystemThread(so);
m1.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args){
new S_port();
}
} (S端的子线程:SystemThread类..)
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(){
String str0 = Lib.readsocketUTF(so);
System.out.println(str0);
}
} (我写的Lib类..)
package c_port_packageBJDoctor;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class Lib {
static InputStream inputstream = null;
static String readsocketUTF(Socket s){
byte[] buf = new byte[2048*2];
int num = 0;
try {
inputstream = s.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();
}//继续从网络中读取文件
}
String str0 = new String(buf);
String msg = str0.trim();
return msg;
}
} (我的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 outputstream = null;
public C_port(){
try {
s = new Socket("127.0.0.1",60000);
outputstream = 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,这个问题解决了,我高兴了,现在我们的群里,加入了143个人\r\n我们群里的人,都决心互相学习,增长本领";
byte[] b = str.getBytes();
int len = b.length;
try {
outputstream.write(b,0,len);
outputstream.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new C_port();
}
}
希望得到高手的点拨:
为什么在我运行了S端和C端之后,会出现S端的console窗口,打印出“完全为空”的场景的内容...?
希望得到CSDN中的高手的尽快的点拨!!
谢谢高手!!
谢谢CSDN!!
一百分奉上!!Java调试Java排错
我在做一个通信程序,现在我利用“字节流”写出了一个“防止EOFException异常”的Lib类.
并且,我进行了测试,源代码如下:
(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();
SystemThread m1 = new SystemThread(so);
m1.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args){
new S_port();
}
} (S端的子线程:SystemThread类..)
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(){
String str0 = Lib.readsocketUTF(so);
System.out.println(str0);
}
} (我写的Lib类..)
package c_port_packageBJDoctor;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class Lib {
static InputStream inputstream = null;
static String readsocketUTF(Socket s){
byte[] buf = new byte[2048*2];
int num = 0;
try {
inputstream = s.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();
}//继续从网络中读取文件
}
String str0 = new String(buf);
String msg = str0.trim();
return msg;
}
} (我的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 outputstream = null;
public C_port(){
try {
s = new Socket("127.0.0.1",60000);
outputstream = 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,这个问题解决了,我高兴了,现在我们的群里,加入了143个人\r\n我们群里的人,都决心互相学习,增长本领";
byte[] b = str.getBytes();
int len = b.length;
try {
outputstream.write(b,0,len);
outputstream.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new C_port();
}
}
希望得到高手的点拨:
为什么在我运行了S端和C端之后,会出现S端的console窗口,打印出“完全为空”的场景的内容...?
希望得到CSDN中的高手的尽快的点拨!!
谢谢高手!!
谢谢CSDN!!
一百分奉上!!Java调试Java排错
解决方案 »
- 请教下各位,怎么用内部类做监视器???
- 怎么将字符串型的数学表达式计算出结果?”
- 面试 abcd1234efgh 怎样转变成 efgh5678dcba 代码最短
- cannot convert from boolean to String
- 关于ArrayList的问题
- 急须解决的问题
- 如何把ArrayList转化成一个String[]呢;
- 请问这个要求输出的是什么 怎么实现??
- 寻求 UltraEdit 10.00a 的注册码,谢谢!
- 请教高手:java 如何调用c/c++的动态链接库(dll, so)?
- java中类初始化问题
- Jni访问java静态成员变量,报JNI WARNING: instance fieldID 0x41620f68 not valid for class
String str0 = Lib.readsocketUTF(so);
System.out.println(str0);
}
我现在将我的编译环境做成了“Eclipse标准版”的编译环境,但是,现在,相同的代码,相同的编译环境,我却得到了下面的输出结果....
并且,顺溜哥,弟我是进行了您的建议:“添加flush()方法”的操作之后,得到的结果:
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 outputstream = null;
public C_port(){
try {
s = new Socket("127.0.0.1",60000);
outputstream = 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,这个问题解决了,我高兴了,现在我们的群里,加入了143个人\r\n我们群里的人,都决心互相学习,增长本领";
byte[] b = str.getBytes();
int len = b.length;
try {
outputstream.write(b,0,len);
outputstream.flush();
outputstream.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new C_port();
}
} 的代码修改之后,还是得到了上面的结果...
希望小行星哥和顺溜哥和CSDN中诸位高手尽快的点拨:
弟我的代码,错在什么地方...?
谢谢小行星哥!!
谢谢顺溜哥!!
谢谢CSDN!!
public class C_port {
Socket s = null;
OutputStream outputstream = null; public C_port() {
try {
s = new Socket("127.0.0.1", 60000);
PrintWriter os = new PrintWriter(s.getOutputStream());
BufferedReader is = new BufferedReader(new InputStreamReader(s
.getInputStream()));
String readline = "CJ必胜!!CJCO!!CJHMF,这个问题解决了,我高兴了,现在我们的群里,加入了143个人我们群里的人,都决心互相学习,增长本领";
os.println(readline);
while (!readline.equals("bye")) {
os.println(readline);
os.flush();
System.out.println("C_port:-->>" + readline);
}
os.flush();
os.close();
is.close();
s.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
new C_port();
}public class S_port { public static void main(String[] args) {
ServerSocket s = null;
Socket so = null;
try {
try {
s = new ServerSocket(60000);
} catch (Exception e) {
e.printStackTrace();
}
try {
so = s.accept();
} catch (Exception e) {
} String line;
BufferedReader is = new BufferedReader(new InputStreamReader(so
.getInputStream()));
PrintWriter os = new PrintWriter(so.getOutputStream());
BufferedReader sin = new BufferedReader(new InputStreamReader(so
.getInputStream()));
System.out.println("S_port:-->>:" + is.readLine());
line = sin.readLine(); while (!line.equals("exit")) {
os.println(line);
os.flush();
System.out.println("Server:" + line);
System.out.println("Client:" + is.readLine());
line = sin.readLine();
}
os.close();
is.close();
so.close();
s.close();
} catch (Exception e) { }
}
}
谢谢您们的相助!!
弟我已经将问题“K·O!!”了!!
是由于弟我的实验环境中,弟我由于连日的疲劳和马虎眼,造成了弟我将原先的未修改采用“DataOutputStream dops = new DataOutputStream(s.getOutputStream);”方案进行书写的Lib类,进行了使用.
造成了我的代码的错误.
感谢三位哥哥的相助!!
长风破浪会有时,弟我一定报答哥!!
不好意思!!
我的本贴的分数用完了!!
我以后进行发帖的时候,都会用“一位日日夜夜向着理想奔跑的筑梦者”,这个落款,进行我的帖子的收尾。
如果哥哥能够再次帮助弟我的话...
弟我将把今天您的相助的人情,在“CSDN论坛的分数这个字段上”,牢牢地补上!!