java小白——网络编程ServerSocket与Socket(服务器与客户机之间的连接)

服务器端

  1. 创建一个套接字socket,使用accept()方法侦听并接受服务器的套接字
  2. 创建服务器套接字输入流,输出流
  3. 使用readUTF()方法从服务器输入流读取数据,也就是客户机的输出流
  4. 输出客户机向服务器发来的信息,此信息由客户机输出流进入了服务器输入流
  5. 由服务器向客户机发出信息,服务器向自己的输出流中使用writerUTF()方法写入数据相当于向客户机的输入流写入信息

服务器端代码如下:

package 网络编程;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Test4 {
	public static void main(String[]args){
		//服务器端
		ServerSocket  serverSocket = null;
		Socket socket = null;
		DataInputStream in = null;
		DataOutputStream out = null;
		
		try {
			serverSocket = new ServerSocket(4320);
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("服务器1启动!");
		try {
			socket = serverSocket.accept();//侦听并接受到服务器套接字的连接,此方法在连接传入之前处于阻塞状态
			in = new DataInputStream(socket.getInputStream());//创建输入流
			out = new DataOutputStream(socket.getOutputStream());//创建输出流
			String string = in.readUTF();//从输入流读取字符串,读取结束之前是阻塞状态
			System.out.println(string);//输出客户机发过来的消息
			out.writeUTF("你好我是服务器1");//向服务器输出流写入字符串
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				in.close();
				out.close();
				serverSocket.close();
				socket.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}

}

客户端

  1. 创建客户端的套接字实例化,并且设置为服务器的端口号和服务器的ip地址实现和服务器的连接
  2. 建立客户端的输入输出流
  3. 客户端向服务器发送信息,客户端向自己的输出流使用writerUTF()方法写入信息。相当于将自己信息写到服务器的输入流。
  4. 从客户端的输入流中使用readUTF()方法读取到服务输出流发来的信息
  5. 打印并输出来自服务器的信息
    客户端的代码如下:
package 网络编程;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

public class Test5 {
	public static void main(String[]args){
		Socket client = null;
		DataInputStream in = null;
		DataOutputStream out = null;
		String ip = "127.0.0.1";//服务器ip地址
		int prot = 4320;//服务器端口
		try {
			client = new Socket(ip,prot);//与服务器建立连接
			in = new DataInputStream(client.getInputStream());//创建客户机的输入流
			out = new DataOutputStream(client.getOutputStream());//创建客户机的输出流
			out.writeUTF("你好我是客户机1");//向服务器发送信息
			String string = in.readUTF();//等待服务器响应信息,进入阻塞状态
			System.out.println(string);//服务器端响应的信息
			
		} catch (Exception e) {
			// TODO: handle exception
		}finally {
			try {
				in.close();
				out.close();
				client.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

运行结果:

  1. 先运行服务器:在这里插入图片描述

  2. 再运行客户端:在这里插入图片描述
    3. 成功连接!

发布了82 篇原创文章 · 获赞 21 · 访问量 2043

猜你喜欢

转载自blog.csdn.net/weixin_45174208/article/details/103376106