Java-网络编程-TCP

1、client端

package cn.bruce.TCP;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

/*实现TCP客户端,连接到服务器,实现数据交换
 * 实现客户端程序的类:java.net.Socket
 * 构造方法:Socket(String host,int port)传递IP和端口
 * OutputStream getOutputStream()返回套接字的输出流-将数据输出,输出到服务器
 * InputStream getInputStream()返回套接字的输入流-从服务器端读取数据
 * 
 */
public class TCPCLIENT {
    public static void main(String[] args) throws IOException, IOException {
        // 创建socket,连接服务器
        Socket s = new Socket("127.0.0.1", 8888);
        // 通过客户端的套接字对象Socket方法,获取字节输出流,将数据写向服务器
        OutputStream out = s.getOutputStream();
        // 服务服务器发回的数据
        InputStream in = s.getInputStream();
        Scanner scanner = new Scanner(System.in);
        byte[] data = new byte[1024];
        while (true)
        {
            out.write(scanner.nextLine().getBytes());//发送给服务器的数据
            System.out.println(new String(data, 0, in.read(data)));//打印接受服务器的数据
        }
//        s.close();
    }
}

2、severs端

package cn.bruce.TCP;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/*实现TCP服务器,实现数据交换
 * 实现客户端程序的类:java.net.SeversSocket
 * 构造方法:Socket(int port)接收端口
 * 很重要的事情:必须获得客户端的套接字对象Socket   accept()
 * 
 * 
 */
public class TCPSevers {
    public static void main(String[] args) throws IOException {
        // 创建服务器对象
        ServerSocket ss = new ServerSocket(8888);
        // 调用accept()方法,获取客户端套接字对象
        Socket s = ss.accept();
        // 通过套接字对象,socket获取字节
        InputStream in = s.getInputStream();
        // 服务器向客户端回数据,字节输出流,通过客户端套接字对象获取字节输出流
        OutputStream out = s.getOutputStream();
        byte[] data = new byte[1024];
        Scanner scanner = new Scanner(System.in);
        while (true)
        {
            int len = in.read(data);// 取得数据长度
            System.out.println(new String(data, 0, len));//打印来自客户端的信息
            out.write(scanner.nextLine().getBytes());//发送数据给客户端
        }
    }
    //s.close();关闭后面可以用try改进
}

原文地址:https://www.cnblogs.com/BruceKing/p/13786323.html