网络编程--TCP

来源:互联网 发布:linux 禁用ping 编辑:程序博客网 时间:2024/05/14 04:05
创建TCP客户端
    1,创建TCP客户端socket服务,使用的是socket对象。建议该对象一创建就明确目的地(要连接的主机,端口)。
    2,如果连接建立成功,就说明数据传输通道已建立。该通道就是socket流,是底层建立好的。想要输入或者输出流对象,可以去找socket来获取。getOutputStream( ) 或 getInputStream( )
    3,使用输出流,将数据写出。
    4,关闭资源。
    public static void clientDemo() throws UnknownHostException, IOException{
        Socket socket = new Socket("192.168.3.116",10001);
        OutputStream out = socket.getOutputStream();//使用客户端的输出流 将数据发送给服务器
        out.write("TCP客户端发送的数据".getBytes());//发送数据到服务端
        InputStream in = socket.getInputStream();//使用客户端的输入流 获取服务器返回的数据
        byte[] buf = new byte[1024];
        int len = in.read(buf);
        String str = new String(buf,0,len);
        System.out.println( "server:"+str);//服务端反馈的数据
        socket.close();
    }  


创建TCP服务端
    1,创建服务端socket服务。通过ServerScoket对象。
    2,服务端必须对外提供一个端口,否则客户端无法连接。
    3,获取连接过来的客户端对象。
    4,通过客户端对象,获取socket流,读取客户端发送的数据。
    5,关闭资源。关闭客户端,关闭服务端。

    public static void serverDemo() throws IOException{
        ServerSocket serverSocket = new ServerSocket(10001);
        Socket socket = serverSocket.accept();
        InputStream in = socket.getInputStream();
        byte[] buf = new byte[1024];
        int len = in.read(buf);
        String str = new String(buf,0,len);
        String ip = socket.getInetAddress().getHostAddress();
        System.out.println(ip+ " : " + str);//接收到的客户端发送的数据
        OutputStream out = socket.getOutputStream();
        out.write("接收到客户端数据".getBytes());//返回信息给客户端
        socket.close();
        serverSocket.close();
    }  


-------------------------TCP服务端返回键盘输出的字母的大写字符串------------------------------
客户端示例代码:
    public static void clientDemo() throws UnknownHostException, IOException{
        Socket s = new Socket("192.168.3.116",10004);
        BufferedReader bufr = 
        new BufferedReader(new InputStreamReader(System.in));//获取键盘录入
        PrintWriter out = new PrintWriter(s.getOutputStream(),true);//socket输出流 输出数据到服务端
        BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));//获取服务端返回的数据
        String line = null;
        while((line = bufr.readLine())!=null){
            if("over".equals(line)){
                break;
            }
            out.println(line);//发送数据给服务端
            String upperStr = bufin.readLine();
            System.out.println("服务端返回的数据"+upperStr);
        }
        s.close();
    }  

服务端示例代码:
    public static void serverDemo() throws IOException{
        ServerSocket ss = new ServerSocket(10004);    
        Socket s = ss.accept();
        System.out.println(s.getInetAddress().getHostAddress()+"connection....");
        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
        PrintWriter out = new PrintWriter(s.getOutputStream(),true);
        String str = null;
        while((str=bufIn.readLine())!=null){
            System.out.println("服务端接收到数据:"+str);
            out.println(str.toUpperCase());
        }
        s.close();
        ss.close();
    }  
0 0