JAVA Socket通信(包含服务端和客户端)

实例上有足够的注释我在这里就不再多说了,如果有疑问可以给我回复信息。

客户端:

package com.socket.demo;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;

/**
 * 简单的数据通信客户端
 * @author USER
 *
 */
public class Client{
    private Socket socket;
    private DataOutputStream out;
    private DataInputStream in;
    public Client(){
        try{
            socket=new Socket(InetAddress.getLocalHost(),20000);  //建立连接server之网络平台socket

            out=new DataOutputStream(socket.getOutputStream());          //建立网络输出串流对象os
            out.writeUTF(getMsg());                                        //输出讯息传往server

            in=new DataInputStream(socket.getInputStream());            //建立网络输入串流对象is
            System.out.println("message:"+in.readUTF());             //印出msgin内容
            socket.close();//关闭连接                                             //关闭平台socket
        }
        catch(IOException e){                                           //网络连接例外处理执行区
            System.out.println(e.toString());
            System.exit(1);
        }
    }
    /**
     * 从键盘上录入数据并发送至服务端
     * @return
     */
    private String getMsg(){
        DataInputStream inputStream = new DataInputStream(System.in);
        try {
            return inputStream.readUTF();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 程序的入口main方法
     * @param args
     */
    public static void main(String args[]){
        new Client();
    }
}


服务器端:

package com.socket.demo;
import java.net.*;
import java.io.*;
import java.util.*;

/**
 * 服务器端
 * @author USER
 *
 */
public class Server{
    
    private ServerSocket SS;
    private DataOutputStream out;
    private DataInputStream in;
    private Socket socket;

    public Server(){
        try{
            SS=new ServerSocket(20000);//创建服务Socket并指定端口号
            System.out.println("Server created.\nWaiting...");

            while(true){
                socket=SS.accept();//接收客户单的请求
                System.out.println("connected form clinet"+socket.getInetAddress().getHostAddress());//打印出客户端主机地址
                System.out.println("clinet's name:"+socket.getInetAddress().getHostName());//打印客户端主机名称
                System.out.println("date:"+new Date());//打印时间
                
                in=new DataInputStream(socket.getInputStream());//输入流
                /*打印出客户端输入的信息*/
                System.out.println("message:"+in.readUTF());

                out=new DataOutputStream(socket.getOutputStream());//输出流
                out.writeUTF("服务器端数据:"+in.readUTF());//将输入的信息从服务器端再返回给客户端
            }
        }
        catch(IOException e) {
            System.out.println(e.toString());
            System.exit(1);
        }
    }
    
    public static void main(String args[]){
        new Server();//启动服务器端
    }
}

 

posted on 2012-09-05 15:37  飘杨......  阅读(251)  评论(0)    收藏  举报