Java知识点复习:Day24

本文详细介绍了Java中的Socket和ServerSocket类在TCP网络通信中的应用。Socket类用于创建客户端套接字,ServerSocket类用于创建服务器端套接字。通过示例代码展示了如何建立连接、发送和接收数据,并强调了资源的关闭与释放。
摘要由CSDN通过智能技术生成

知识点


Socket类

Socket 类:该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。

构造方法

public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指 定的host是null ,则相当于指定地址为回送地址。

小贴士:回送地址(127.x.x.x) 是本机回送地址(Loopback Address),主要用于网络软件测试以及本 地机进程间通信,无论什么程序,一旦使用回送地址发送数据,立即返回,不进行任何网络传输。

构造举例,代码如下:

Socket client = new Socket(“127.0.0.1”, 6666);

成员方法

public InputStream getInputStream() : 返回此套接字的输入流。

如果此Scoket具有相关联的通道,则生成的InputStream 的所有操作也关联该通道。

关闭生成的InputStream也将关闭相关的Socket。

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

如果此Scoket具有相关联的通道,则生成的OutputStream 的所有操作也关联该通道。

关闭生成的OutputStream也将关闭相关的Socket。

public void close() :关闭此套接字。

一旦一个socket被关闭,它不可再使用。

关闭此socket也将关闭相关的InputStream和OutputStream 。

public void shutdownOutput() : 禁用此套接字的输出流。

任何先前写出的数据将被发送,随后终止输出流。

ServerSocket类

ServerSocket 类:这个类实现了服务器套接字,该对象等待通过网络的请求。

构造方法
public ServerSocket(int port) :使用该构造方法在创建ServerSocket对象时,就可以将其绑定到一个指 定的端口号上,参数port就是端口号。

构造举例,代码如下:
ServerSocket server = new ServerSocket(6666);

成员方法
public Socket accept() :侦听并接受连接,返回一个新的Socket对象,用于和客户端实现通信。该方法 会一直阻塞直到建立连接。


课堂实践

package Demo01Tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

// 客户端
public class TcpClient {
	public static void main(String[] args) throws  IOException {
		// 1.创建一个客户端对象socket,构造方法中绑定服务器的ip地址和端口号
		Socket socket = new Socket("127.0.0.1",8888);
		
		// 2.使用outputstream获取输出流对象
		
		OutputStream os = socket.getOutputStream();
		
		// 3.使用write方法写数据
		
	os.write("你好,服务器".getBytes());
		
		//4.使用getinputstream 获取输入流
		InputStream is = socket.getInputStream();
		
		// 5.使用输入流的方法获取
		byte[] bytes =new byte[1024];
		int len=is.read(bytes);
		
		System.out.println(new String(bytes,0,len));
		
		// 释放资源
		socket.close();
		
	}
}

package Demo01Tcp;

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

public class TcpServer {
	public static void main(String[] args) throws IOException {
		
		// 1.创建服务器ServerSocket 对象和系统要指定的端口号
		ServerSocket server = new ServerSocket(8888); // 端口号
		// 2.使用ServerSocket对象中的accept方法,获取到请求的客户端对象Socket
		
		Socket socket = server.accept();
		
		// 3.使用 对象中的getinputstream 获取网络中输入流对
		
		InputStream is=socket.getInputStream();
		
		// 4.使用网络输入流中的read方法,读取客户端发送的数据
		byte[] bytes =new byte[1024];
		int len=is.read(bytes);
		
		System.out.println(new String(bytes,0,len));
		
		// 5.使用 对象中的 outputstream获取输出流
		OutputStream os = socket.getOutputStream();
		
		// 6.使用输出流中的  给客户端回写数据
		os.write("收到数据,谢谢".getBytes());
		
		//7.释放资源
		socket.close();
		server.close();
		
	
	
	}
}


**2020080605036**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值