java网络编程(一)Socket、ServerSocket
1.Socket
java都是基于InputStream还有OutputStream实现的。Socket也可以通过输入、输出流进行读写。
客户端
OutputStream outputStream = null;
try {
Socket socket = new Socket("127.0.0.1", 8111);
outputStream = socket.getOutputStream();
outputStream.write("大鸡腿".getBytes());
outputStream.flush();
socket.shutdownOutput();
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
BufferedReader br=new BufferedReader(inputStreamReader);
String str=null;
while((str=br.readLine())!=null){
System.out.println("服务端接收到信息:"+str);
}
br.close();
inputStream.close();
outputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
Socket socket=new Socket进行连接
当输出完成之后,如果还要监听,不能说outputStream.close();不然连接也会关闭的,应该使用socket.shutdownOutput();
记得最后进行所有资源的close
2.ServerSocket
通过ServerSocket开启tcp访问。accept()进行端口监听,获取socket,从而操作outpuStream、InputStream进行输入输出,最后记得close
ServerSocket serverSocket=new ServerSocket(8111);
System.out.println("服务器已开启8111端口监听...");
Socket socket=serverSocket.accept();
inputStream = socket.getInputStream();
InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
BufferedReader br=new BufferedReader(inputStreamReader);
while((str=br.readLine())!=null){
System.out.println("服务端接收到信息:"+str);
}
OutputStream outputStream=socket.getOutputStream();
outputStream.write("收到信息".getBytes());
outputStream.flush();
outputStream.close();
br.close();
inputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
还没有评论,来说两句吧...