Java常用应用——Socket(一)

基于TCP的Socket传输

Tips:先有服务端,后有客户端

客户端与服务端传输的流程
在这里插入图片描述

socket是服务端与客户端传输的关键

步骤

1、服务端暴露自己的端口号
2、客户端通过服务端暴露的端口号,使用本机的 ip 地址访问服务端
3、服务端通过accept()监听客户端是否访问

传输信息

OuputStream 输出流发送消息
out.write(…) 发送的消息
InputStream 输入流接受消息
in.read(…) 接受的消息存于…

代码

服务端
package com.yanqun.socket;

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

public class Server {
	public static void main(String [] args) throws IOException {
		
		ServerSocket server = new ServerSocket(9999);//绑定端口号9999,暴露服务
		
		//监听客户端是否发来连接
		Socket socket = server.accept();
		
//		System.out.println("服务端与客户端连接成功");
		
		//给客户端发送消息
		OutputStream out = socket.getOutputStream();
		out.write("hello".getBytes());
		
		//接受客户端的消息
		byte[] bs = new byte[100];
		InputStream in = socket.getInputStream();
		in.read(bs);
		System.out.println("客户端反馈的消息为:" + new String(bs));
		
		in.close();
		out.close();
		socket.close();
		server.close();
	}
}

客户端
package com.yanqun.socket;

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

public class client {

	public static void main(String[] args) throws UnknownHostException, IOException {

		Socket client = new Socket("127.0.0.1",9999);//本机ip地址链接端口号为9999的服务端
		
		//接受服务端的消息
		InputStream in = client.getInputStream();
		byte[] bs = new byte[100];
		in.read(bs);
		System.out.println("从服务端发送过来的消息为:" + new String(bs));
		
		//给服务端做出反馈
		OutputStream out = client.getOutputStream();
		out.write("world".getBytes());
		
		out.close();
		in.close();
		client.close();
		
	}

}

运行

1、先运行服务端
2、再运行客户端

String于byte[]的转换

1、String 转 byte[] 的方法: 字符串 . getBytes()
2、byte[] 转 String 的方法 : new String(…)

Java常见应用——Socket文件(二)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章