Socket编程总结

Socket编程/网络编程/套接字编程

1,概述
Socket常用于多个服务器间的数据通信.
本质上就是把数据抽象成IO流(字节流)的形式在网络中传输.
要求两个服务器都使用Socket技术.并指定对方的IP和端口号.
2,工具类
在这里插入图片描述

  ServerSocket:socket通信的服务器端–可以给客户端发送数据也可以接收客户端发来的数据
  Socket:socket通信的客户端–给服务器端发送数据也可以接收服务器端发来的数据
3,ServerSocket
–此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。

创建对象
  new ServerSocket(int port)
 创建绑定到特定端口的服务器套接字。
 int 表示IP地址,port 表示端口号
常用方法
1) Socket accept()
   侦听并接受到此套接字的连接
2) void close()
   关闭此套接字。
4,Socket
此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
创建对象
new Socket(String host, int port)
创建一个流套接字并将其连接到指定主机上的指定端口号。
常用方法
   InputStream getInputStream()
   返回此套接字的输入流。
   OutputStream getOutputStream()
   返回此套接字的输出流。

5,入门案例
–需求:服务器端接收客户端发来的hello,并给客户端响应hello。
–服务器端测试:

			package cn.tedu.net;
			import java.io.IOException;
			import java.io.InputStream;
			import java.io.OutputStream;
			import java.net.ServerSocket;
			import java.net.Socket;

			//代表Socket通信的服务器端
			//职责:1,给客户端发送数据
			//	   2,接收客户单发来的数据
			public class Server {
				public static void main(String[] args) throws Exception {
					//1,启动服务器,并在8000端口处等待客户端的连接请求
					ServerSocket server = new ServerSocket(8000);
					System.out.println("服务器已启动!");
					//2,接收客户端发来的连接请求,并建立连接通道
					Socket socket = server.accept() ;
					System.out.println("有一个客户端发来了请求");
					//3,接收客户端发来的hello--in
					InputStream in = socket.getInputStream() ;
					//4,开始读取数据
					for (int i = 0; i < 5; i++) {
						int read = in.read();
						//按照字符读就行了,别转成int值
						char c = (char)read ;
						System.out.println(c);
					}
					
					//5,给客户端发出数据--out
					OutputStream out = socket.getOutputStream() ;
					out.write("world".getBytes());
			//		out.close();//把数据刷出去+关闭资源
					out.flush();//把数据刷出去
				}
			}

客户器端测试:

			package cn.tedu.net;

			import java.io.IOException;
			import java.io.InputStream;
			import java.io.OutputStream;
			import java.net.Socket;
			import java.net.UnknownHostException;

			//代表Socket通信的客户端
			//职责:1,接收服务器发来的数据
			//     2,给服务器发送数据
			public class Client {
				public static void main(String[] args) throws Exception {
					//1,连接指定的服务器,并且建立通信通道
					//参数1--要连接的服务器的ip地址
					//参数2--要连接的服务器的端口号
					Socket socket = new Socket("127.0.0.1",8000);
					System.out.println("与服务器连接成功!");
					
					//2,给服务器发送hello--out
					OutputStream out = socket.getOutputStream() ;
					//3,开始写出数据
					out.write("hello".getBytes());//String->byte[]
			//		out.close();//把数据刷出去+关闭资源
					out.flush();//把数据刷出去
					
					//4,接收服务器发来的数据--in
					InputStream in = socket.getInputStream();
					for (int i = 0; i < 5; i++) {
						int read = in.read();
						//按照字符读就行了,别转成int值
						char c =  (char) read;
						System.out.println(c);
					}
					
			//		socket.close();
				}
			}

猜你喜欢

转载自blog.csdn.net/GTC_GZ/article/details/108760193
今日推荐