TCP通信
1.服务器端
ServerSocket类
构造方法明确端口号
方法:accept()方法,连接发送端,获取Socket对象
Socket类
构造方法:明确ip和端口号
常用方法:
getPort()获取端口号
getLocalAddress()返回InetAddress对象
close()释放资源
getInputStream()返回输入流对象
getOutputStream()返回输出流对象
TCP通信
public static void main(String[] args) throws IOException { //创建客户端对象,明确要链接的服务器地址和端口号 InetAddress inet=InetAddress.getByName("127.0.0.1"); Socket socket=new Socket(inet,9999); //获取向服务器端发送数据的字节输出流 OutputStream out=socket.getOutputStream(); //写出字节 out.write("你好".getBytes()); //接收服务器的回复 //获取数据源是服务器的字节输入流 InputStream in=socket.getInputStream(); byte[] bytes=new byte[1024]; int len=in.read(bytes); //获取ip String ip=socket.getInetAddress().getHostAddress(); //获取端口 int port=socket.getPort(); System.out.println("ip地址为:"+ip+",端口号为:"+port+",发送的内容为:"+new String(bytes,0,len)); //释放资源 socket.close(); }
public static void main(String[] args) throws IOException { //创建服务器端对象,明确端口号 ServerSocket server=new ServerSocket(9999); //调用accept方法,与客户端建立链接,并获取与服务器链接的客户端对象 Socket socket=server.accept(); //获取数据源是客户端的字节输入流,接收客户端数据 InputStream in=socket.getInputStream(); //开始接收 byte[] bytes=new byte[1024]; int len=in.read(bytes); //获取服务器端ip String ip=socket.getInetAddress().getHostAddress(); //获取端口号 int port=socket.getPort(); System.out.println("ip地址为:"+ip+",端口为:"+port+",发送的内容为:"+new String(bytes,0,len)); //回复客户端 //获取目的地是客户端的字节输出流 OutputStream out=socket.getOutputStream(); out.write("收到".getBytes()); //关闭服务器释放资源 server.close(); }
TCP通信步骤
1.明确端口号和ip
2.创建字节输出流对象
3.写出字节
4.接收端,创建服务器对象,明确端口号
5.连接接收端,返回Socket对象
6.创建字节输入流对象
7.创建空数组,接收数据
8.输出数据
9.回复客户端,创建字节输出流,写出数据
10.使用空数组接收数据
11.输出数据
12.释放资源
TCP文件上传案例
public static void main(String[] args) throws UnknownHostException, IOException { //创建客户端对象,明确要链接的服务器ip地址和端口号 Socket socket=new Socket("192.168.1.171",9999); //创建文件字节输入流对象,明确数据源 FileInputStream fis=new FileInputStream("/Users/air/io0803/a.jpg"); //从socket对象中获取字节输出流,明确目的地 OutputStream out=socket.getOutputStream(); byte[] bytes=new byte[1024]; int len=0; //开始复制 while((len=fis.read(bytes))!=-1) { out.write(bytes,0,len); } //告诉服务器端别读了,结束了 socket.shutdownOutput(); //接收服务器端回复 //获取字节输入流,明确数据源 InputStream in=socket.getInputStream(); len=in.read(bytes); System.out.println("服务器端发送的内容为:"+new String(bytes,0,len)); //释放资源 socket.close(); fis.close(); }
public static void main(String[] args) throws IOException { //创建服务器端对象,明确端口 ServerSocket server=new ServerSocket(9999); //调用accept方法,与客户端建立连接,并获取与我连接的客户端对象 Socket socket=server.accept(); //获取从socket对象中获取字节输入流,明确数据源 InputStream in=socket.getInputStream(); //创建目的地文件夹 File file=new File("/Users/air/讲义/upload"); //如果该文件夹不存在 if(!file.exists()) { //创建该文件夹 file.mkdirs(); } //拼接目的地路径 String name="oracle"+System.currentTimeMillis()+new Random().nextInt(10000)+".jpg"; String filename=file+File.separator+name; //创建文件字节输出流,明确目的地 FileOutputStream fos=new FileOutputStream(filename); //创建字节数组,开始复制 byte[] bytes=new byte[1024]; int len=0; while((len=in.read(bytes))!=-1) { fos.write(bytes,0,len); } //回复客户端 //获取字节输出流,明确目的地 OutputStream out=socket.getOutputStream(); //写出字节 out.write("收到".getBytes()); //释放资源 server.close(); fos.close(); }
TCP上传文件步骤:
1.明确端口号和IP地址,创建Socket对象
2.创建字节输入流对象,明确数据源
3.获取字节输出流对象,创建空数组
4.把文件写到流中
6.服务端创建服务器对象,明确端口号
7.连接客户端,返回Socket对象
8.获取字节输入流对象
9.创建字节输出流对象,明确目的地
10.明确文件名,目的地文件夹
11.开始复制文件到目的地
12.回复客户端,获取输出流对象
13.写出数据
14.客户端接收数据
15.客户端输出收到的数据
16.释放资源
浙公网安备 33010602011771号