import java.net.*;
import java.io.*;public class TestSockClient {
public static void main(String args[]) {
OutputStream os = null;
InputStream is = null;
try {
Socket s = new Socket ("localhost",8888);
os = s.getOutputStream();
is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hi,I'm client.");
if (dis.readUTF() != null)
System.out.println(dis.readUTF());
dis.close();
dos.close();
s.close();
} catch (UnknownHostException ue) {
ue.printStackTrace();
} catch(IOException ie) {
ie.printStackTrace();
}
import java.io.*;public class TestSockClient {
public static void main(String args[]) {
OutputStream os = null;
InputStream is = null;
try {
Socket s = new Socket ("localhost",8888);
os = s.getOutputStream();
is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hi,I'm client.");
if (dis.readUTF() != null)
System.out.println(dis.readUTF());
dis.close();
dos.close();
s.close();
} catch (UnknownHostException ue) {
ue.printStackTrace();
} catch(IOException ie) {
ie.printStackTrace();
}
解决方案 »
- 数据库连接超时问题
- 文件下载效率问题,请指教
- hibernate删除一条记录出错,请问什么原因
- js如何取后台list
- 初学jsp的一些困惑?
- 求大家解决一个现场实践问题,给点思路哦
- 请教一个Java IO方面的问题
- 我使用acegi中碰到的问题
- Struts问题:The requested resource (/user/userAction.do) is not available.
- 用JSP程序调用EJB为什么总是提示package ****** does not exist?
- dao层的sql异常是在dao层处理还是抛到service层处理
- ssh 表单提交后 java.lang.NullPointerException 异常
server端如何接收和发送的?
import java.io.*;public class TestSockServer {
public static void main(String args[]) {
OutputStream os = null;
InputStream is = null;
try {
ServerSocket ss = new ServerSocket(8888);
while(true) {
Socket s = ss.accept();
is = s.getInputStream();
os = s.getOutputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os);
while(dis.readUTF() != null) {
System.out.println(dis.readUTF());
System.out.println("From:" + s.getInetAddress());
System.out.println("Port:" + s.getPort());
}
dos.writeUTF("hi,I'm server!");
dis.close();
dos.close();
s.close();
}
} catch(Exception ie) {
System.out.println("Syetem error.");
}
}
}
这个是server的
while(dis.readUTF() != null) {
System.out.println(dis.readUTF());
System.out.println("From:" + s.getInetAddress());
System.out.println("Port:" + s.getPort());
}
这个循环的问题。
在第一次读取了客户端写过来的信息后,运行循环里的代码块。
接着,再次判断循环条件dis.readUTF() != null,就是这给停住了,它应该是在等客户端写信息过来。
而客户端写完第一次之后也在等服务器,所以就停那了。
我建议你如果这个循环里的代码,没有循环的必要就不要用了,或是改一下循环条件。
让它在特定的时候能够跳出来,结束循环。进而继续运行后面的代码。
PS:仅代表个人看法、、、