Java网络编程TCP

复制代码
案例1:
public
class API2 { public static void main(String[] args) throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(),9999); //连接上后,生成Socket,通过socket.getOutputStream()得到和socket对象关联的输出流对象 OutputStream outputStream = socket.getOutputStream(); //通过输出流,写入数据到数据通道 outputStream.write("diwhfoiwv".getBytes()); //关闭对象和socket必须关闭 outputStream.close(); socket.close(); System.out.println("客户端退出..."); } }
复制代码
复制代码
public class API {
    public static void main(String[] args) throws IOException {
        //创建客户端服务器,在本机的9999端口,等待连接。当没有
        //客户端连接9999端口时,程序会阻塞,等待连接
        ServerSocket serverSocket = new ServerSocket(9999);
        Socket socket = serverSocket.accept();
        System.out.println(socket+"连接成功");
        InputStream inputStream = socket.getInputStream();
        //IO流读取
        byte[] buf = new byte[10];
        int read=0;
        while ((read = inputStream.read(buf))!=-1){
            System.out.println(new String(buf,0,read));
        }
        inputStream.close();
        socket.close();
    }
}
复制代码

 案例二:

1.编写一个服务器和客户端

2.服务器端在9999端口监听

3.客户端连接到服务器,发送“hello server”,并接收服务器端回发的“hello client”

4.服务器端接收并发送

复制代码
服务器
public class API {
    public static void main(String[] args) throws IOException {
        //创建客户端服务器,在本机的9999端口,等待连接。当没有
        //客户端连接9999端口时,程序会阻塞,等待连接
        ServerSocket serverSocket = new ServerSocket(9999);
        Socket socket = serverSocket.accept();
        System.out.println("客户端连接成功");
        InputStream inputStream = socket.getInputStream();
        byte[] buf = new byte[1024];
        int read=0;
        while ((read=inputStream.read(buf))!=-1){
            System.out.println(new String(buf,0,read));
        }
        socket.shutdownInput();
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("你好".getBytes());
        socket.shutdownOutput();
        inputStream.close();
        outputStream.close();
    }
}
复制代码
复制代码
客户端
public class API2 {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket(InetAddress.getLocalHost(),9999);
        System.out.println("服务器连接成功");
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("你好".getBytes());
        socket.shutdownOutput();

        InputStream inputStream = socket.getInputStream();
        int read = 0;
        byte[] buf= new byte[1024];
        while ((read=inputStream.read(buf))!=-1){
            System.out.println(new String(buf,0,read));
        }
        socket.shutdownInput();
        inputStream.close();
        outputStream.close();
    }
}
复制代码

使用字符流传送信息:

 

 

 

复制代码
服务器
public class API {
    public static void main(String[] args) throws IOException {
        //创建客户端服务器,在本机的9999端口,等待连接。当没有
        //客户端连接9999端口时,程序会阻塞,等待连接
        ServerSocket serverSocket = new ServerSocket(9999);
        Socket socket = serverSocket.accept();
        System.out.println("客户端连接成功");
        InputStream inputStream = socket.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String s = bufferedReader.readLine();
        System.out.println(s);

        OutputStream outputStream = socket.getOutputStream();
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        bufferedWriter.write("你好 字符流");
        bufferedWriter.newLine();
        bufferedWriter.flush();
        bufferedReader.close();
        bufferedWriter.close();
    }
}

客户端
public class API2 {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket(InetAddress.getLocalHost(),9999);
        System.out.println("服务器连接成功");
        OutputStream outputStream = socket.getOutputStream();
        BufferedWriter bufferedWriter= new BufferedWriter(new OutputStreamWriter(outputStream));
        bufferedWriter.write("你好 字符流");
        //表示写入内容结束
        bufferedWriter.newLine();
        bufferedWriter.flush();


        InputStream inputStream = socket.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String s = bufferedReader.readLine();
        System.out.println(s);
        bufferedReader.close();
        bufferedWriter.close();socket.close();
    }
}
复制代码
使用TCP上传文件

 

 

复制代码
public class API {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8888);
        Socket socket = serverSocket.accept();
        System.out.println("客户端连接成功");
        String destPath = "src\\3.png";
        BufferedInputStream bufferedInputStream = new BufferedInputStream(socket.getInputStream());
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(destPath));
        byte[] bu= new byte[1024];
        int read= 0;

        while ((read=bufferedInputStream.read(bu))!=-1){
            bufferedOutputStream.write(bu,0,read);
        }

        bufferedOutputStream.flush();
        bufferedOutputStream.close();
        bufferedInputStream.close();
        serverSocket.close();
        socket.close();
    }
}
复制代码
复制代码
public class API2 {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket(InetAddress.getLocalHost(),8888);
        System.out.println("服务器连接成功");
        String filePath= "d:\\1.png";
        String destPath = "src\\1.png";
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(filePath));
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream());
        byte[] buf = new byte[1024];
        int read= 0;
        while ((read = bufferedInputStream.read(buf))!=-1){
                bufferedOutputStream.write(buf,0,read);
        }
        bufferedOutputStream.flush();
        bufferedInputStream.close();
        socket.close();
    }
}
复制代码
posted @   贝勒爷ma  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示