TCP程序设计

客户端套接字Socket类

Socket client=new Socket("192.168.0.1",1100); //服务器的IP地址,可以是字符串或InetAddress对象,1100是服务器端口

Socket类常用方法:
getInputStream() 获取套接字输入流,返回InputStream对象
getOutputStream() 获取套接字输出流,返回OutputStream对象
isConnected() 查看套接字是否连接
close() 关闭套接字

服务器套接字ServerSocket类
ServerSocket server=new ServerSocket(1100); //1100是服务器开启的端口

ServerSocket类常用的方法:
accept() 等待客户端的连接,返回成功连接的Socket对象
getInetAddress() 返回此服务器套接字的本地地址
isClosed() 查看服务器套接字是否关闭
close() 关闭套接字


【案例】
创建两个Project,一个Server(服务器),一个Client(客户端),首先启动服务器,等待客户端访问

         

public class Server {
    public static void main(String[] args) {
        ServerSocket server= null;//创建服务器套接字
        try {
            server = new ServerSocket(1100);
            System.out.println("服务器启动成功,等待客户端访问...");
            //等待客户端连接,服务器通过此行代码与客户端互通
            Socket client=server.accept();
            System.out.println("有客户端接入,客户端IP:"+client.getInetAddress());
//服务器从客户端接收的消息
            InputStream in=client.getInputStream();//输入流
            byte[] bt=new byte[1024];//创建字节数组,并指定大小
            int len=in.read(bt);//读入client字节流内容
            String data=new String(bt,0,len);//字节转字符
            System.out.println("客户端发来消息:"+data);
//服务器反馈给客户端的信息
            OutputStream out=client.getOutputStream();//输出流
            String message="我是服务器,欢迎访问";
            out.write(message.getBytes());//输出的内容,字符串转字节(字符数组)

            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public class Client {
    public static void main(String[] args) {
        try {
            Socket client=new Socket("127.0.0.1",1100);//创建套接字,指定服务器地址、端口。有效则自动连接
            System.out.println("连接成功");
//客户端发给服务器的消息
            OutputStream out=client.getOutputStream();//输出流
            String message="我是客户端";
            out.write(message.getBytes());//输出的内容,字符串转字节(字符数组)
//客户端接收服务器反馈的信息
            InputStream in=client.getInputStream();//输入流
            byte[] bt=new byte[1024];//创建字节数组,并指定大小
            int len=in.read(bt);//读入client字节流内容
            String data=new String(bt,0,len);//字节转字符
            System.out.println("服务器反馈的消息:"+data);

            client.close();//关闭套接字
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

posted @ 2018-09-12 19:23  夕西行  阅读(141)  评论(0编辑  收藏  举报