TCP网络编程

//服务器端
package com.demo;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TestServer {
    public static void main(String[] args) {
        //服务器端  7*24
        try(ServerSocket ss=new ServerSocket(9000);
                //System.in只能关闭一回,必须放在服务器一起进行关闭。
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        
        ){
            while (true) {
                //accept()返回当前连接的客户端对象,该方法是阻塞方法,如果没有客户端连接,一直等待监听
                try (Socket s = ss.accept();
                        //getInputStream 获取输入流
                        InputStream is = s.getInputStream();
                        //向客户端写入
                        OutputStream os = s.getOutputStream();
                        //BufferedReader
                        ) {
                    //服务器端反复对话
                    while (true) {
                        //accept方法一旦返回Socket对象,证明三次握手和流通道的建立已经完成    
                        //接收客户端发送的数据
                        byte[] b = new byte[1024];
                        boolean flag = true;
                        int count = is.read(b);
                        //接收的客户端信息
                        String msg = new String(b, 0, count);
                        System.out.println("从客户端发送的内容为:" + msg);
                        //中断服务器端对应的客户端
                        if ("exit".equals(msg)) {
                            break;
                        }
                        //从服务器端给客户端响应
                        //服务器端在屏幕上输入的响应
                        System.out.println("请输入服务器端给客户端的响应:");
                        String input = br.readLine();
                        os.write(input.getBytes());
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}
=====================================
//  ① 客户端
package com.demo;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;
   
public class TestClient {
    public static void main(String[] args) {
        try(Socket s=new Socket(InetAddress.getLocalHost(), 9000);
        //getOutputStream 获取输出流
            OutputStream os=s.getOutputStream();        
        //接收来自服务器端的数据
            InputStream is=s.getInputStream();
        //接收用户从屏幕上输入的信息
            Scanner sc=new Scanner(System.in);
                ){
            //反复对话
            while (true) {
                System.out.println("请输入客户端发送给服务器端的数据:");
                //用户输入的数据
                String msg = sc.next();
                //数据的发送
                os.write(msg.getBytes());
                //退出
                if("exit".equals(msg)) {
                    break;
                }
                //读取服务器中的内容
                byte[] b = new byte[1024];
                int count = is.read(b);
                System.out.println("接收到从服务器发来的信息为:" + new String(b, 0, count));
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值