java网络编程(5)——Tcp

  Tcp相对于Udp就是面向连接的协议,最主要的特点要建立连接之后才能通信,客户端用Socket需要指点地址与端口,服务端用ServeSocket,只需指点监听某个端口,因为是面向连接,所以服务器端一定要先运行起来,然后客户端就可以通过地址和端口找到我们的服务端,建立连接之后就可以通信!

  首先实现最简单的服务端,客户端通信的一个小例子

客户端:

package com.seven.tcp;

import java.io.OutputStream;
import java.net.Socket;

public class TcpClient {
    
    public static void main(String[] args) throws Exception {
        
        Socket socket = new Socket("127.0.0.1",10001);
        
        OutputStream out = socket.getOutputStream();
        
        out.write("hello tcp".getBytes());
        
        socket.close();
    } 
}

服务端:

package com.seven.tcp;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {

    public static void main(String[] args) throws Exception {
        
        ServerSocket serverSocket = new ServerSocket(10001);
        
        //获取客户端socket
        Socket socket = serverSocket.accept();    
        
        InputStream in = socket.getInputStream();
        
        byte[] b = new byte[1024];
        
        while(true){
            int len = in.read(b);
            if(len == -1) break;
            System.out.println(socket.getInetAddress()+"---->"+new String(b,0,len));
        }
        socket.close(); 
    }
}

这样就实现了客户端服务端之间的通讯,其实主要都是通过socket对象实现的,客户端socket的OutputStream对应服务端socket的InputStream,而服务端的OutputStream就对应客户端的InputStream,通过这两个流就实现了通信,包括文本,图片,文件等,只需把文件变成字节流就可以通过tcp来传输!

原文地址:https://www.cnblogs.com/sevenlin/p/sevenlin_tcpdemo20150802.html