package socket;import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class SocketServices {
public static void main(String[]args){
ServerSocket ss;
try {
ss = new ServerSocket(30000);
while(true){
Socket s=ss.accept();

new Thread(new SocketThread(s)).start();
PrintWriter ps=new PrintWriter(new OutputStreamWriter (s.getOutputStream()));

ps.println("信息收到");


}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
}********************************************************************************************************
package socket;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;public class SocketThread implements Runnable {
private Socket s;
BufferedReader br;
public SocketThread(Socket s){
this.s=s;
try {
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run() {



try {
while(br.readLine()!=null){ System.out.println(br.readLine());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



}}
******************************************************************************************************
package socket;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;public class SocketClient {
public static void main(String[] args){
try {
Socket s=new Socket("127.0.0.1",30000);

new Thread(new SocketThread1(s)).start();
BufferedReader br1=new BufferedReader(new InputStreamReader(s.getInputStream()));
String line=br1.readLine();
while(line!=null){
System.out.println(line);
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
**************************************************************************************
package socket;import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;public class SocketThread1 implements Runnable {
private Socket s;
private PrintWriter pw=null;
public SocketThread1(Socket s){
this.s=s;

}
public void run() {
try {
PrintWriter pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
pw.println("信息发送");

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
***********************************************************************

解决方案 »

  1.   

    对于 socket, 需要调用 flush() 才会发送到网络上, 不自动调用flush()是出于效率的考虑
      

  2.   

      也不明白,  PrintWriter 不是自动flush的吗?     用socket必须flush一下?
      

  3.   

    PrintWriter是不是自动flush要在构造参数里设置。缺省是不自动flush的,去看看API文档。
      

  4.   

    可以参考下列的例子 
    http://blog.csdn.net/hzhxxx/archive/2009/12/09/4970196.aspx下列描述了JNSP(java  network service platform)服务的部署和功能,如有不明白之处,自己查看源代码,我无力和没有太多时间回答太多的问题.
    源代码一起提供,可以随意修改,发布,并商业化,但请保留作者的信息.为了技术的进步,请注意共享成就.目前已经发布于:http://download.csdn.net/source/1885332;http://hzhxxx.download.csdn.net/
    如果查看后有技术问题探讨和建议的,欢迎致电致信联系.系统架构设计和实现有如下特点:
    A. 采用 Accept-Connect 通讯模型,能统一管理系统中使用的所有 Socket 资源;
    B. 系统支持通信和协议分离的实现原则,支持自定义协议解析模块;通信负责数据收发,协议负责数据鉴别,两者配合实现通信和协议的和谐工作;
    C. 灵活支持业务处理功能重定义,分级支持慢业务和快业务的不同业务处理线程;
    D. 丰富灵活的配置参数,能满足高扩展性;
    E. 配合业务处理和通信模型,能异步的管理所有的交互步骤;
    F. 分布式服务设计和部署,实现动态(热拔插)的增加和较少业务服务器,减少乃至拒绝单点服务;