Java编程--网络编程(TCP)

时间:2022-04-07 16:12:42

Java编程--网络编程(TCP)

一. TCP协议发送数据:

 A:创建发送端的socket对象。这一步若成功,则说明已经建立成功了。

 B:获取输出流,写数据

 C:释放资源

TCP客户端相关方法:

public Socket(String host,int port)创建一个流套接字并将其连接到指定主机上的指定端口号。

public OutputStream getOutputStream()返回此套接字的输出流。 

【案例】实现TCP客户端代码:

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
/*
 * 	TCP协议发送数据:
 * 	A:创建发送端的socket对象。这一步若成功,则说明已经建立成功了。
 * 	B:获取输出流,写数据
 * 	C:释放资源
 * 
 * */
public class Client {
	public static void main(String[] args) throws IOException {
		// A:创建发送端的socket对象。这一步若成功,则说明已经建立成功了。
		// public Socket(String host,int port):创建一个流套接字并将其连接到指定主机上的指定端口号。
		Socket s = new Socket("192.168.80.1", 8888);

		// B:获取输出流,写数据
		// public OutputStream getOutputStream():返回此套接字的输出流。
		OutputStream os = s.getOutputStream(); // 通道内的输出流
		os.write("hello TCP".getBytes());

		// C:释放资源
		s.close();
	}
}

此时点击运行,会出现 Exception in thread "main" java.net.ConnectException: Connection refused: connect 异常。这是因为必须要有对应的服务器端程序。TCP协议必须先开服务器!!!


二. TCP协议接收数据:

A:创建接收端的socket对象

B:监听客户端连接,返回一个对应的socket对象

C:获取输入流,读取数据显示在控制台

D:释放资源

 TCP服务器端相关方法:

java.net
类 ServerSocket

java.lang.Object

  java.net.ServerSocket

此类实现服务器套接字。

public ServerSocket(int port)创建绑定到特定端口的服务器套接字。

public Socket accept()侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。 

【案例】实现TCP服务器端代码:

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
 * 	TCP协议接收数据:
 * 	A:创建接收端的socket对象
 * 	B:监听客户端连接,返回一个对应的socket对象
 * 	C:获取输入流,读取数据显示在控制台
 * 	D:释放资源
 * */
public class Server {
	public static void main(String[] args) throws IOException {
		// 1.创建接收端的socket对象
		// public ServerSocket(int port):创建绑定到特定端口的服务器套接字。
		ServerSocket ss = new ServerSocket(8888);

		// 2.监听客户端连接,返回一个对应的socket对象
		// public Socket accept():侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
		Socket s = ss.accept();

		// 3.获取输入流,读取数据显示在控制台
		InputStream is = s.getInputStream();

		byte[] bys = new byte[1024];
		int len = is.read(bys);
		String str = new String(bys, 0, len);
		System.out.println(str);

		// 4.释放资源
		s.close();
		// ss.close();

	}
}