基于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(…)