1:服务器端(TCP协议的)
1:创建服务器端的Socket(TCP协议的),并制定绑定的端口
ServerSocket serverSocket=new ServerSocket(8888);
Socket socket=null;
System.out.println("***服务器即将启动,等待客户端的连接***");
2:调用accept()方法开始监听,等待客户端的连接
socket=serverSocket.accept();
3:获取输入流,并读取客户端信息
//获取字节流
InputStream is = socket.getInputStream();
//字节流转换字符流
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info=null;
while((info=br.readLine())!=null){//循环读取客户端的信息
System.out.println("我是服务器,客户端说:"+info);}
socket.shutdownInput();//关闭输入流
4:关闭资源
br.close();
isr.close();
is.close();
2:客户端(TCP协议的)
1创建客户端Socket,指定服务器地址和端口
Socket socket=new Socket("localhost", 8888);
2.获取输出流,向服务器端发送信息
OutputStream os=socket.getOutputStream();//字节输出流
PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流
pw.write("用户名:alice;密码:789");
pw.flush();
socket.shutdownOutput();//关闭输出流
3.关闭资源
br.close();
pw.close();
os.close();
socket.close();
反过来服务器向客户端发送和客户端向服务器发送是一样的。
1:服务器端(UDP协议的)
1.创建服务器端DatagramSocket,指定端口
DatagramSocket socket=new DatagramSocket(8800);
2.创建数据报,用于接收客户端发送的数据
byte[] data =new byte[1024];//创建字节数组,指定接收的数据包的大小
DatagramPacket packet=new DatagramPacket(data, data.length);
3.接收客户端发送的数据
System.out.println("****服务器端已经启动,等待客户端发送数据");
socket.receive(packet);//此方法在接收到数据报之前会一直阻塞
4.读取数据
String info=new String(data, 0,packet.getLength());
System.out.println("我是服务器,客户端说:"+info);
1:客户端(UDP协议的)
1.定义服务器的地址、端口号、数据
InetAddress address=InetAddress.getByName("localhost");
int port=8800;
byte[] data="用户名:admin;密码:123".getBytes();
//2.创建数据报,包含发送的数据信息
DatagramPacket packet=new DatagramPacket(data, data.length, address, port);
3.创建DatagramSocket对象
DatagramSocket socket=new DatagramSocket();
4.向服务器端发送数据报
socket.send(packet);
socket.close();