为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Java Socket应用---通信是这样练成的_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Java Socket应用---通信是这样练成的

汤小洋 全栈工程师
难度初级
时长 2小时 0分
  • 客户端的操作
    查看全部
  • 服务器端的操作
    查看全部
  • 如何实现多客户端与单一服务端的通信
    查看全部
  • 客户端 1.定义服务器的地址、端口号、数据 InetAddress address=InetAddress.getByName("localhost"); int port=8800; byte[]data="用户名:admin;密码:123".getBytes(); //创建数据报,包含发送的数据信息 DatagramPacket packet=new DatagramPakcet(data,data.length,address,port); //创建DatagramSocket的对象 DatagramSocket socket=new DatagramSocket(); //向服务器发送数据报 socket.send(packet); //接收服务器发送过来的消息 //创建数据报,用于接收服务器响应的数据 byte[]data2=new byte[1024]; DatagramPacket packet2=new DatagramPacket(data2,data2.length); //接收服务器响应的数据 socket.receive(packet2); //读取数据 String reply=new String(data2,0,packet2.getLength()); System.out.println("我是客户端,服务器说:"+reply); //关闭资源 socket.close(); -------------------------------------- 服务端响应数据 //定义客户端的地址、端口号、数据 IneetAddress address=packet.getAddress(); int port=packet.getPort(); byte[]data2="欢迎你!".getBytes(); //创建数据报,包含响应的数据信息 DatagramPacket packet2=new DatagramPacket(data2,data2.length,address,port); //响应客户端 socket.send(packet2); //关闭资源 socket.close();
    查看全部
  • 服务器端,实现基于UDP的用户登录 //创建服务器端DatagramSocket,指定端口 DatagramSocket socket=new DatagramSocket(8800); //创建数据报,用于接收客户端发送的数据 byte[]data=new byte[1024];//创建字节数组,指定接收的数据报的大小 DatagramPacket packet=new DatagramPacket(data,data.length); //接收客户端发送的数据 socket.receive(packet);//此方法在接收到数据之前会一直阻塞 //读取数据 String info=new String(data,0,packet.getLength()); System.out.print("我是服务器,客户端说:"+info);
    查看全部
  • UDP编程 ------------------------ 服务器端 1.创建DatagramSocket,指定端口号 2.创建DatagramPacket 3.接收客户端发送的数据信息 4.读取数据 ----------------------------------- 客户端实现步骤 1.定义发送信息 2.创建DatagramPacket,包含将要发送的信息 3.创建DatagramSocket 4.发送数据
    查看全部
  • UDP编程 1.UDP协议(用户数据报协议)是无连接、不可靠、无序的 2.进行数据传输时i,首先要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的Socket(主机地址和端口号),然后再将数据报发送出去 3.相关的操作类:DatagramPacket:表示数据报包 DatagramSocket:进行端到端通信的类
    查看全部
    0 采集 收起 来源: DatagramPacket

    2017-08-01

  • 应用多线程来实现服务器与多客户端之间的通信 基本步骤 1.服务器端创建ServerSocket,循环调用accept()等待客户端连接 2.客户端创建一个socket并请求和服务器端连接 3.服务器端接收客户端请求,创建socket与该客户建立专线连接 4.建立连接的两个socket在一个单独的线程上对话 5.服务器端继续等待新的连接 ---------------------------------------------- 服务器线程处理类 public class ServerThread extends Thread { //和本线程相关的socket Socket socket=null; public ServerThread(Socket socket) { this.socket=socket; } //线程执行的操作,响应客户端的请求 public void run() { //获取输入流,并读取客户端信息 //获取输出流,反馈信息给客户端 } } --------------------------- 服务器的修改 Socket socket=null; //记录客户端的数量 int count=0; //循环监听等待 while(true) { //调用accept()方法开始监听,等待客户端的连接 socket=serverSocket.accept(); //创建一个新的线程 ServerThread serverThread=new ServerThread(socket); //启动线程 serverThread.start(); count++; System.out.println(count); //获取当前客户端的IP InetAddress address=socket.getInetAddress(); System.out.println("当前客户端的IP:"+address.getHostAddress()); }
    查看全部
  • 服务器向客户端进行响应 1.获取输出流,响应客户端的请求 OutputStream os=socket.getOutputStream(); PrintWriter pw=new PrintWriter(os);//包装为打印流 pw.write("欢迎您!"); pw.flush();//调用flush()方法刷新缓冲输出 //关闭资源 pw.close(); os.close(); socket.close(); -------------------------------- 客户端接收服务器发送的消息 InputStream is=socket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String line; while((line=br.readerline()!=null) { System.out.println("我是客户端,服务器说:"+line); } is.close(); br.close(); socket.close();
    查看全部
  • 客户端 1.创建客户端Socket,指定服务器地址和端口 Socket socket=new Socket("IP地址","端口号"); 2.获取输出流,向服务器发送信息 OutputStream os=socket.getOutputStream();//字节输出流 PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流 pw.write("用户名:admin;密码:123"); pw.flush(); socket.shutdownOutput();//关闭输出流 //关闭相应的资源 pw.close(); os.close(); socket.close();
    查看全部
  • 实现基于TCP协议的Socket通信,实现用户登录 ------------------------------------- 服务器端 1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket=new ServerSocket(8888); 2.调用accept()方法开始监听,等待客户端的连接 System.out.println("****服务器即将启动,等待客户端的连接****"); Socket socket=serverSocket.accept(); 3.获取输入流,并读取客户端信息 InputStream is=socket.getInputStream();//字节输入流 InputStreamReader isr=new InputStreamReader(is);//将字节流包装为字符流 BufferedReader br=new BufferedReader(isr);//为输入流添加缓冲 String info=null; while((info=br.readLine())!=null) { //循环读取客户端的信息 System.out.println("我是服务器,客户端说:"+info); } socket.shotdownInput();//关闭输入流 br.close(); isr.close(); is.close(); socket.close(); serverSocket.close();
    查看全部
  • 服务器端 1.创建ServerSocket对象,绑定监听端口 2.通过accept()方法监听客户端请求 3.连接建立后,通过输入流读取客户端发送的请求信息 4.通过输出流向客户端发送响应信息 5.关闭相关资源 --------------------------------------------- 客户端 1.创建Socket对象,指明需要连接的服务器的地址和端口号 2.连接建立后,通过输出流向服务 端发送请求信息 3.通过输入流获取服务器响应的信息 4.关闭相关资源
    查看全部
  • Socket通信 1.TCP协议是面向对象连接、可靠的、有序的,以字节流的方式发送数据 2.基于TCP协议实现网络通信的类 客户端的Socket类 服务器端的ServerSocket类 --------------------------------------------- Socket通信实现步骤 1.创建ServerSocket和Socket 2.打开连接到Socket的输入/输出流 3.按照协议对Socket进行读/写操作 4.关闭输入输出流、关闭Socket
    查看全部
    1 采集 收起 来源:Socket 简介

    2017-08-01

  • 利用socket实现服务器与客户端之间的链接是双向的
    查看全部
  • 使用URL读取页面内容 //创建一个URL实例 URL url =new URL("http://www.baidu.com"); //通过URL的openStream方法获取URL对象所表示的资源的字节输入流 InputStream is=url.openStream(); //将字节输入流转换成字符输入流 InputStreamReader isr=new InputStreamReader(is,"utf-8"); //将字符输入流添加上缓冲 BufferedReader br=new BufferedReader(isr); String data=br.readLine();//读取数据 while(data!=null) {//循环读取数据 System.out.println(data); data=br.readLine(); }
    查看全部

举报

0/150
提交
取消
课程须知
本课程是 Java 开发课程的高级课程,需要对 Java 中的面向对象、IO、多线程,以及网络相关知识有一定的基础
老师告诉你能学到什么?
1、网络相关的基础知识 2、Java 中网络相关 API 的应用 3、实现基于 TCP 的 Socket 编程 4、实现基于 UDP 的 Socket 编程
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!