目录

步骤概述

常用方法

示例

需求:演示Tcp传输

客户端

服务端

编码

图解


 

步骤概述

       SocketServerSocket

       建立客户端和服务器端。

       建立连接后,通过Socket中的IO流进行数据的传输。

       关闭Socket。

客户端与服务器端是两个独立的应用程序。

常用方法

Socket(InetAddress address, int port):创建一个流套接字并将其连接到指定 IP 地址的指定端口号。

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

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

InetAddress getInetAddress():返回套接字连接的地址。

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

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

Socket accept():侦听并接受到此套接字的连接。

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

示例

需求:演示Tcp传输

1.tcp分客户端和服务端。

2.客户端对应的对象是Socket;服务端对应的对象是ServerSocket。

客户端

需求:定义IP地址与端点发送数据到指定服务端。

通过查阅Socket对象,发现在该对象建立时,就可以去连接指定主机。

因为tcp是面向连接的,所以在建立Socket服务时,就要有服务端存在,并连接成功。形成通路后,在该通道进行数据的传输。

步骤

1.创建Socket服务,并指定要连接的主机和端口。

2.获取Socket流中的输出流,将数据写到该流中,通过网络发送给服务端。

3.关闭客户端。

服务端

需求:定义端点接收数据并打印在控制台上。

步骤

1.建立服务端的Socket服务,ServerSocket();

2.获取连接过来的客户端对象。

       通过ServerSocket的accept()方法。没有连接就会等待,所以这个方法是阻塞式方法。

3.客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据,并打印在控制台上。

4.关闭服务器。(可选)

编码

import java.io.*;
import java.net.*;
class TcpClient{	//	客户端
	public static void main(String[] args)throws Exception{
		// 创建客户端的Socket服务,指定目的主机和端口。
		Socket s=new Socket("192.168.0.104",10003);
		
		// 为了发送数据,应该获取Socket流中的输出流。
		OutputStream out=s.getOutputStream();
		
		out.write("Tcp Dmeo...".getBytes());
		
		s.close();
	}
}
class TcpServer{	//	服务端
	public static void  main(String[] args)throws Exception{
		// 建立服务端Socket服务,并监听一个端口。
		ServerSocket ss=new ServerSocket(10003);
		// 通过accept()方法获取连接过来的客户端对象。
		Socket s=ss.accept();
		
		String ip=s.getInetAddress().getHostAddress();
		System.out.println(ip+" is connected");
		
		// 获取客户端发送过来的数据,那么套使用客户端对象的读取流来读取数据。
		InputStream in=s.getInputStream();
		
		byte[] buf=new byte[1024];
		int len=in.read(buf);
		
		System.out.println(new String(buf,0,len));
		
		s.close();	// 关闭客户端。
		ss.close();	//	关闭服务器。
		
	}
}

图解

java tcp发送数据 java tcp传输_套接字