java网络基础—TCP

来源:互联网 发布:debian安装软件命令 编辑:程序博客网 时间:2024/06/09 17:26

TCP主要用于收发文件,它与UDP不同,如同QQ视频一样,对方必须接受才能开始,它主要有ServeSocket和Socket两个类,ServeSocket为服务端Socket为客户端,都可以实现收发文件的操作。
当客户端发送文件到服务端时客户端主要步骤是:
1.客户端创建Socket对象(服务器IP,端口)
2.Socket对象方法 getOutputStream获取字节输出流,写到服务器
3.关闭客户端资源
服务端主要操作是:
1. 创建ServerSocket对象,打开端口
2. 使用ServerSocket对象方法accept获取客户端连接对象
3 Socket getInputStream获取字节输入流,读取客户端发来数据,将数据存储
4 关闭服务端

package tcp;/** * 客户端发送文件到服务端 * 1.新建客户端对象,设置服务端端口和IP * 2.新建输出流将文件或数据发送到服务端 * 3.关闭资源 */import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class Client1 {    public static void main(String[] args) {        //Socket对象,服务器端口,IP        Socket socket = null;        //捕捉异常服务器的端口和IP不存在        try {            socket = new Socket("127.0.0.1",2000);        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        //输出流,将文件发送到服务端        OutputStream outputStream = null;        try {            outputStream = socket.getOutputStream();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        //读取文件        File file=new File("/home/z/桌面/a1.png");        //输出图片        FileInputStream fileInputStream = null;        try {            fileInputStream = new FileInputStream(file);        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        //输出        byte[] bs=new byte[1024];        int len=0;        try {            while((len=fileInputStream.read(bs))!=-1)            {                outputStream.write(bs);            }        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally {            //关闭            try {                socket.close();                outputStream.close();                fileInputStream.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }           }    }}
package tcp;/** * 服务器接受客户端发送的文件 * 1.设置服务器的端口(运行时需要先把服务端口打开) * 2.使用accept方法获取连接对象 * 3.新建输入流接受客户端发来的数据 * 4.新建输出流把输入的数据写入文件 * 5.关闭资源 */import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import java.net.UnknownHostException;public class Serve1 {    public static void main(String[] args) {        //服务器打开端口        ServerSocket serverSocket = null;        try {            serverSocket = new ServerSocket(2000);        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        //使用accept获取客户端连接对象        Socket socket = null;        try {            socket = serverSocket.accept();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        //输入流接收客户端发来的文件        InputStream inputStream = null;        try {            inputStream = socket.getInputStream();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        //保存的文件地址        File file =new File("/home/z/桌面/new/tu.png");        //输出到文件        FileOutputStream fileOutputStream = null;        try {            fileOutputStream = new FileOutputStream(file);        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        int len=0;        //写入输出        byte[] bs=new byte[1024];        try {            while ((len=inputStream.read(bs))!=-1)            {                fileOutputStream.write(bs, 0, len);            }        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();            //关闭资源        }finally{            try {                socket.close();                inputStream.close();                serverSocket.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}
原创粉丝点击