Socket编程:本地通信demo

服务器创建:

package server;

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

public class ServerLocal {
	public static void main(String[] args) throws Exception {
		//在本机8000端口上启动服务
		ServerSocket serverSocket = new ServerSocket(8000);
		System.out.println("服务器已启动");
		//等待客户端发送请求并建立连接通道
		Socket serverSocket1 = serverSocket.accept();
		System.out.println("客户端已连接");
		//建立输入流
		InputStream in = serverSocket1.getInputStream();
		//建立输出流
		OutputStream out = serverSocket1.getOutputStream();
		//依次接收5个字符
		for(int i=0;i<5;i++) {
			char c = (char)in.read();
			System.out.print(c);
		}
		//发送5个字符
		out.write("world".getBytes());
		out.flush();
		serverSocket.close();
		serverSocket1.close();
	}
}

客户端创建:

package client;

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

public class ClientLocal {
	public static void main(String[] args) throws Exception {
		//创建地址为127.0.0.1,端口为8000的套接字
		Socket clientSocket = new Socket("127.0.0.1",8000);
		//通过套接字获取输入流
		InputStream in = clientSocket.getInputStream();
		//通过套接字获取输出流
		OutputStream out = clientSocket.getOutputStream();
		//输出hello
		out.write("hello".getBytes());
		//刷出所有字符
		out.flush();
		for(int i=0;i<5;i++) {
			//循环读取服务端发出的数据
			char c =(char)in.read();
			System.out.print(c);
		}
		//断开连接
		clientSocket.close();
	}
}

测试:
先启动服务器:

服务器已启动

再启动客户端:
客户端控制台输出:

world

服务器控制台输出:

服务器已启动
客户端已连接
hello

总结:
进行socket编程时,服务器端需要根据端口创建服务,然后通过accept()方法获取套接字并与客户端建立连接;客户端需要根据要连接的服务器ip和端口号创建套接字。通过套接字,我们可以获取输入输出流,通过输入输出流即可进行数据的交互。

猜你喜欢

转载自blog.csdn.net/qq_42695926/article/details/83829617
今日推荐