JAVA TCP通信服务端与客户端实例

来源:互联网 发布:测试交换机端口好坏 编辑:程序博客网 时间:2024/05/05 06:48

服务端代码

public class ServerTest {private static int TIME = 0;public static void main(String[] args) {        System.out.println("即将开始监听");        try {            final ServerSocket serverSocket =new ServerSocket(8123);            System.out.println("server start...");            while (Boolean.TRUE) {                System.out.println("循环监听");                                                             Socket socket=serverSocket.accept();                InputStream inputStream=socket.getInputStream();//                DataInputStream dis = new DataInputStream(inputStream);                while (dis.available() <= 4) {                                  if(TIME>9) {                        break;                    }                    Thread.sleep(1000);                    System.out.println("available: " + dis.available());                    TIME++;                             }                byte[] data = new byte[dis.available()];                dis.read(data);                Packet packet;                packet = PacketFactory.createPacket(data); //采用工厂模式生成包对象                packet.unserialize(data); // 将数据装换成对象的属性                packet.process();// 具体业务操作                      }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }}

}

客户端代码

public class ClientTest {public static void main(String[] args) {    Socket socket;    for(int i=0;i<8;i++) {        try {            socket = new Socket("127.0.0.1",8123);            OutputStream outputStream=socket.getOutputStream();            DataOutputStream dos = new DataOutputStream(outputStream);//              LoginPacket login = new LoginPacket();//              login.setUserName("huangsheng----"+i);//              login.setPassword("123");            MessagePacket msg = new MessagePacket();            msg.setMfriendName("huangsheng");            msg.setmContent("nizaiganshenmea");            dos.write(msg.serialize());  // 将消息包转换成指定格式的数据             dos.flush();            socket.shutdownOutput();//            dos.close();            outputStream.close();            socket.close();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

}
消息格式如下
这里写图片描述
服务端采用工厂模式。不需要知道用户传进来的是什么包,直接create就行。

完整代码http://download.csdn.net/download/qq_28380057/9779897

1 0
原创粉丝点击