TCP客户端代码:
package cn.hiluna.demo3;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
* 实现tcp客户端,连接到服务器端
* 和服务器实现一次完整的数据交换
* 实现tcp程序的类java.net.socket
* 构造方法:
* Socket(String host, int port) 传递服务器IP和端口号
* 注意:构造方法只要运行,就会和服务器进行连接,连接失败,跑出异常
*
* OutputStream getOutputStream() 返回此套接字的输出流。
* 作用:将数据输出,输出到服务器
*
* InputStream getInputStream() 返回此套接字的输入流。
* 作用:从服务器端读取数据。
* 客户端服务器数据交换,必须使用套接字对象Socket中获取的IO流,自己new流,不行
*/
public class TCPClient {
public static void main(String[] args) throws IOException {
//创建socket对象,用于连接服务器
Socket socket = new Socket("localhost",6001);
//通过客户端端的套接字对象Socket对象,获取字节输出流,将数据写向服务器
OutputStream outputStream = socket.getOutputStream();
outputStream.write("服务器OK".getBytes());
//拿到服务器给的程序
InputStream inputStream = socket.getInputStream();
byte[] data = new byte[1024];
int length = inputStream.read(data);
System.out.println(new String(data,0,length));
socket.close();
}
}
TCP服务器端代码:
package cn.hiluna.demo3;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 实现TCP协议服务器程序
* 表示服务器程序的类:java.net.ServerSocket
* 构造方法:
* ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
*
* 很重要的事情:必须要获得客户端的套接字对象Socket
* Socket accept() 侦听并接受到此套接字的连接。
*
*/
public class TCPServer {
public static void main(String[] args)throws IOException {
ServerSocket serverSocket = new ServerSocket(6001);
//调用服务器套接字对象的方法accept(),侦听并接受到此套接字的连接。
Socket socket = serverSocket.accept();
//通过客户端套接字对象,socket获取字节输入流,读取的是客户端发送来的数据
InputStream inputStream = socket.getInputStream();
byte[] data = new byte[1024];
int lenght = inputStream.read(data);
System.out.println(new String(data,0,lenght));
//服务器向客户端回送数据,字节输出流,通过客户端套接字对象获取字节输出流
OutputStream outputStream = socket.getOutputStream();
outputStream.write("收到".getBytes());
socket.close();
serverSocket.close();
}
}