简单网络程序无错误却无法进行,debug没发现异常。
##Server
public class ServerTCP {
public static void main(String[] args) throws IOException {
System.out.println("服务端启动 , 等待连接 .... ");
// 1.创建 ServerSocket对象,绑定端口,开始等待连接
ServerSocket ss = new ServerSocket(6666);
// 2.接收连接 accept 方法, 返回 socket 对象.
Socket server = ss.accept();
// 3.通过socket 获取输入流
BufferedInputStream bis = new BufferedInputStream(server.getInputStream());
// 4.一次性读取数据
// 4.1 创建字节数组
byte[] b = new byte[1024];
// 4.2 据读取到字节数组中.
int len = bis.read(b);
// 4.3 解析数组,打印字符串信息
String msg = new String(b, 0, len);
System.out.println(msg);
// =================回写数据=======================
// 5. 通过 socket 获取输出流
BufferedOutputStream bos = new BufferedOutputStream(server.getOutputStream());
// 6. 回写数据
bos.write("我很好,谢谢你".getBytes());
// 7.关闭资源.
bos.close();
bis.close();
server.close();
}
}
#Client
public class ClientTCP {
public static void main(String[] args) throws Exception {
System.out.println("客户端 发送数据");
// 1.创建 Socket ( ip , port ) , 确定连接到哪里.
Socket client = new Socket("localhost", 6666);
// 2.通过Scoket,获取输出流对象
OutputStream os = client.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(os);
// 3.写出数据.
os.write("client发送".getBytes());
//在这块修改成bos.write("client发送".getBytes());不报错,但程序卡在服务端阻塞状态。
// 4. 通过Scoket,获取 输入流对象
BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
// 5. 读取数据数据
byte[] b = new byte[100];
int len = bis.read(b);
System.out.println(new String(b, 0, len));
// 6. 关闭资源 .
bis.close();
bos.close();
os.close();
client.close();
}
}
##疑问:为什么在client中 os.write(“client发送”.getBytes());修改成bos.write(“client发送”.getBytes());不报错,但程序卡在服务端阻塞状态。
记录一下,以后解决了回来添加方法。