Java_187_网络编程_TCP编程_TCP套接字_服务端ServerSocket_客户端Socket_通讯原理_ServerSocket创建服务端流程_Socket创建客户端流程

package TCP;
/**
 * TCP编程
 * 需求:完成网络登录功能;
 * 用户输入用户名密码,服务器给出登录成功或失败的提示
 * 
 * 分析
 * 使用基于TCP协议的Socket网络编程实现
 * TCP协议基于请求-响应模式
 * 在网络通讯中,第一次主动发起通信的程序被称作客户端(Client)程序
 * 第一次通讯中等待连接的程序被称作服务器端(Server)程序
 * 利用IO流实现数据的传输
 *	
 * 客户端 输出流-->输入流 服务端 OutputStream --> InputStraem
 * 客户端 输入流<--输出流 服务端 InputStream <-- OutputStream
 * 
 * 详细步骤(通讯原理)
 * 服务器创建ServerSocket,在指定端口监听并处理请求
 * 客户端创建Socket,向服务器发送请求
 * 
 * 服务器端                                                                                                         客户端
 * 1.创建ServerSocket(int port)对象            1.创建Socke(String host,int port)对象
 * 2.在Socket上监听客户端的连接请求
 * 3.阻塞,等待连接的建立              <----->   2.向服务器发送[连接]请求
 * 4.接收并处理请求信息                <----->  3.向服务器发送[服务]请求
 * 5.将处理结果返回给客户端        <----->      4.接收服务结果
 * 6.关闭流和Socke对象                          5.关闭流和Socket对象
 * 
 * @author pmc
 *
 */
public class TCPTest {

}

ServerSocket服务端流程

package TCP;

import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * TCP流程 创建服务器 
 * 1.指定端口使用ServerSocket创建服务器 
 * 2.阻塞式等待连接accept 
 * 3.操作:输入输出流操作 
 * 4.释放资源
 * 
 * @author pmc
 *
 */
public class ServerTest {
	public static void main(String[] args) throws IOException {
		// 1.指定端口只用ServerSocket创建服务器
		ServerSocket server=new ServerSocket(8888);
		// 2.阻塞式等待连接accept/浏览器访问localhost:8888
		Socket client=server.accept();
		System.out.println("-----Server-----");
		// 3.操作:输入输出流操作
		DataInputStream in=new DataInputStream(client.getInputStream());
		String data=in.readUTF();
		System.out.println(data);
		// 4.释放资源
		in.close();
		client.close();
		
		//关闭服务器
		server.close();
	}
}

Socket客户端流程

package TCP;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

/**
 * TCP流程 创建客户端 
 * 1.建立连接:使用Socket创建客户端+服务器地址+端口
 * 2.操作:输入输出流操作
 * 3.释放资源
 * 
 * @author pmc
 *
 */
public class ClientTest {
	public static void main(String[] args) throws IOException, IOException{
		System.out.println("-----Client-----");
		// 1.建立连接:使用Socket创建客户端+服务器地址+端口
		Socket client=new Socket("localhost",8888);
		// 2.操作:输入输出流操作
		DataOutputStream out=new DataOutputStream( client.getOutputStream());
		String data="hello";
		out.writeUTF(data);
		out.flush();
		// 3.释放资源	
		out.close();
		client.close();
	}
	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_Pmc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值