基于TCP的网络编程
功能:模拟网站的登录,客户端录入账号密码,然后服务端进行验证。
功能分解1:单项通讯
功能:客户端发送一句话到服务器:
【1】客户端
package com.msb.test02; import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; /** * @author : liu * 日期:14:38:40 * 描述:IntelliJ IDEA * 版本:1.0 */ public class TestClient { //这是一个main方法:是程序的入口 public static void main(String[] args) throws IOException { //1.创建套接字:指定服务器的ip和端口号 Socket s=new Socket("192.168.3.2",8888); //2.对于程序员来说,向外发送数据 感受==》利用输出流 OutputStream os=s.getOutputStream(); DataOutputStream ds=new DataOutputStream(os); //利用这个OutputStream就可以向外发送数据了,但是没有直接发送String的方法 //所以我们又在OutputStream外面套了一层处理流DataOutputStream ds.writeUTF("你好"); //3.关闭流+网络资源 ds.close(); os.close(); s.close(); } }
【2】服务端
package com.msb.test02; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; /** * @author : liu * 日期:14:54:43 * 描述:IntelliJ IDEA * 版本:1.0 */ public class TestServer { //这是一个main方法:是程序的入口 public static void main(String[] args) throws IOException { //1.创建套接字:指定服务器端口号 ServerSocket ss=new ServerSocket(8888); //2.等待客户端发来的信息 Socket s = ss.accept();//阻塞方法:等待接收客户端的数据,什么时候接收到数据,什么时候程序继续向下执行 //accept()返回值为一个Socket,这个Socket其实就是客户端的Socket //接到这个Socket以后,客户端和服务器才能真正产生了连接,才真正可以通信了 //3.感受到的操作流: InputStream is = s.getInputStream(); DataInputStream dis=new DataInputStream(is); //4.读取客户端发来的数据: String str=dis.readUTF(); System.out.println("客户端发来的数据为:"+str); //5.关闭流+关闭网络资源 dis.close(); is.close(); s.close(); ss.close(); } }
测试:
(1)先开启客户端还是先开启服务器:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本