Socket 套接字 -1

一、Socket

1.概念:
1)Socket:也叫"套接字",主要用于网络通信(网络通信由两大块组成:服务端和客户端)
用来描述IP地址和端口号信息等。
        2)服务端和客户端
服务端通常使用的是ServerSocket,用来监听客户端的连接。
客户端同时使用Socket,向服务端发送请求连接。
2.套接字的使用
1)在客户端中应该指定要发送请求的ip地址和端口号。
端口号:1-1000,通常1024以内都是操作系统保留的端口号不应该使用,
可以使用大于1024的数字;
2)在服务端需要制定要监听的端口号,同时等待连接。

3.网络通信可以使用Socket进行信息的传输。
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
                通过相应输入输出进行数据的读写。

二、Socket-Client

1 .客户端:Client
Socket socket = new Socket("localhost",8888);
1)getLocalPort():获取本地的端口号;
2) getPort():获取的是远程服务器的端口号;
2.Socket的常用API
InetAddress add= socket.getLocalAddress();//获取本地地址
  add.getHostAddress() 
  add.getLocalHost() 
  add.getHostName() 

三、Socket-Server  

1.服务端:ServerSocket 
ServerSocket server = 
new ServerSocket(8888);//创建一个服务器对象,指定端口号为8888
2.调用accept()方法监听客户端的连接, 方法有阻塞效果。
即:Socket socket = server.accept();


四、相互通信

1.Client1:

public class Client {
	public static void main(String[] args) {
		try {
			Socket socket = new Socket("localhost",8888);//客户端发送请求连接,
		    /**                                     同时指定要发送请求的ip地址和端口号。
		     * Socket套接字的常用API
		     */
			//获取本地地址
			InetAddress add= socket.getLocalAddress();
			System.out.println("主机地址"+add.getHostAddress());
			System.out.println("本地主机"+add.getLocalHost());
			System.out.println("主机名:"+add.getHostName());
			/*
			 * getLocalPort():
			 * 获取本地的端口号
			 */
			System.out.println("本地端口号:"+socket.getLocalPort());
			/*
			 * getPort():
			 * 获取的是远程服务器的端口号
			 */
			System.out.println("端口号:"+socket.getPort());
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

2.Server1

         ServerSocket ss=new ServerSocket(8888);//创建服务器对象,指定端口号

public class Server {
	public static void main(String[] args) {
		try {
			//创建一个服务器对象,指定端口号为8888
			ServerSocket server = 
				new ServerSocket(8888);
			/*
			 * 调用accept()方法监听客户端的连接,
			 * 方法有阻塞效果。
			 */
			System.out.println("---等待客户端连接------");
			Socket socket = server.accept();
			System.out.println("---一个客户端连接成功------");
			
			System.out.println("端口号:"+socket.getPort());
			System.out.println("本地端口号:"+socket.getLocalPort());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
        3. 执行结果

                    ①先运行服务端②再运行客户端

                                

              





猜你喜欢

转载自blog.csdn.net/xiaozelulu/article/details/80178344