TCP通信

       通信时,先由客户端发起通信,服务器端不能首先发起通信,但必须先开启,然后等待客户端的访问。

服务器端用ServerSocket类,客户端用Socket类。

       ServerSocket的构造方法先略去,就是对端口号或IP地址进行声明,以及机器繁忙时同步用户的数量。

ServerSocket的常用方法

Socket accept()用于等待与客户端的连接,在客户端连接之前一直处于阻塞状态,如果有客户端连接就返回一个与之对应的Socket对象
InetAddress getInetAddress()返回一个InetAddress对象,对象中封装了ServerSocket绑定的IP地址
boolean isClosed()该方法用于判断ServerSocket对象是否为关闭状态,如果是关闭状态返回true,反之返回false
void bind(Socket Address endpoint)将ServerSocket对象绑定到指定的IP地址和端口号,参数endpoint封装了IP地址和端口号

客户端程序用的Socket类

Socket类的构造方法用于对IP与端口进行初始化,略。

int getPort()返回Socket对象与服务器端连接的端口号
InetAddress getLocalAddress()获取Socket对象绑定的本地IP地址,并将IP地址封装成InetAddress类型的对象返回
void close()关闭Socket连接,结束本次通信,结束前关闭相关的所有的输入输出流,释放内存资源
InputStream getInputStream()如果该对象由服务器端的Socket返回,就用于读取客户端发送的数据,反之,用于读取服务器端发送的数据
OutputStream getOutputStream()该对象如果是由服务器端的Socket返回,就用于向客户端发送数据,反之,用于向服务器端发送数据

服务器端实现TCP协议的代码:

package net;

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

public class Net {
	public static void main(String args[])throws Exception{
		
        new TCPServer().listen();
	}

}
/*
 * 工作流程:
 * 1.定义一个服务器常用端口
 * 2.常见访问站点
 * 3.Socket监听客户端的信息
 * 4.从客户端接收访问请求
 * 5.向服务器端发送数据
 * 6.客户端监听关闭
 */
class TCPServer{
	//服务器端使用的端口是固定的
	private static final int PORT=7788;
	//定义监听方法,接收抛出的异常
	public void listen() throws Exception{
		//创建货物集散站
		ServerSocket serverSocket=new ServerSocket(PORT);
		//创建接收数据的站点
		Socket client=serverSocket.accept();
		//获取客户端的输出流
		OutputStream os=client.getOutputStream();
		System.out.println("开始与客户端交互数据");
		os.write(("服务器端欢迎你!").getBytes());
		Thread.sleep(5000);
		System.out.println("结束为客户端提供服务");
		os.close();
		client.close();
		
	}
}

客户端实现TCP协议的代码

import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;

public class Send {
	public static void main(String args[])throws Exception{
		//创建TCPClient对象,并调用connect()方法
		new TCPClient().connect();
	}
}
/*
 * 1.定义访问的接口
 * 2.创建套接字,用于连接服务器的
 * 3.通过数据流接收发送过来的数据
 */
class TCPClient{
	//
	private static final int PORT=7788;
	public void connect()throws Exception{
		//创建一个Socket并连接到给出地址和端口号的计算机
		//每次使用的可以是随机的
		Socket client=new Socket(InetAddress.getLocalHost(),PORT);
		//获取接收数据
		InputStream is=client.getInputStream();
		byte[] buf=new byte[1024];
		int len=is.read(buf);
		System.out.println(new String(buf,0,len) );
		client.close();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值