为了账号安全,请及时绑定邮箱和手机立即绑定

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

难度初级
时长 2小时 0分
学习人数
综合评分9.77
496人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 多线程实现 - 服务器与多客户端之间通信 客户端代码不变 /* *服务器线程处理类 */ publicclassServerThreadextendsThread{ //和本线程相关的Socket Socketsocket=null; publicServerThread(Socketsocket){ this.socket=socket; } //线程执行的操作,响应客户端的请求 publicvoidrun(){ InputStreamis=null; InputStreamReaderisr=null; BufferedReaderbr=null; OutputStreamos=null; PrintWriterpw=null; try{ //获取输入流,并读取客户端信息 is=socket.getInputStream(); isr=newInputStreamReader(is); br=newBufferedReader(isr); Stringinfo=null; while((info=br.readLine())!=null){//循环读取客户端的信息 System.out.println("我是服务器,客户端说:"+info); } socket.shutdownInput();//关闭输入流 //获取输出流,响应客户端的请求 os=socket.getOutputStream(); pw=newPrintWriter(os); pw.write("欢迎您!"); pw.flush();//调用flush()方法将缓冲输出 }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ //关闭资源 try{ if(pw!=null) pw.close(); if(os!=null) os.close(); if(br!=null) br.close(); if(isr!=null) isr.close(); if(is!=null) is.close(); if(socket!=null) socket.close(); }catch(IOExceptione){ e.printStackTrace(); } } } }
    查看全部
  • /** *客户端 */ publicclassClient{ publicstaticvoidmain(String[]args){ try{ //1.创建客户端Socket,指定服务器地址和端口 Socketsocket=newSocket("localhost",8888); //2.获取输出流,向服务器端发送信息 OutputStreamos=socket.getOutputStream();//字节输出流 PrintWriterpw=newPrintWriter(os);//将输出流包装为打印流 pw.write("用户名:admin;密码:123"); pw.flush(); socket.shutdownOutput();//关闭输出流 //3.获取输入流,读取服务器端的响应信息 InputStreamis=socket.getInputStream(); BufferedReaderbr=newBufferedReader(newInputStreamReader(is)); Stringinfo=null; while((info=br.readLine())!=null){ System.out.println("这里是客户端,服务器说:"+info); } //4.关闭资源 br.close(); is.close(); pw.close(); os.close(); socket.close(); }catch(UnknownHostExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } }
    查看全部
  • /** *基于TCP协议的Socket通信,实现用户登录 *服务器端 */ publicclassServer{ publicstaticvoidmain(String[]args){ try{ //1.创建一个服务器端Socekt,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocketserverSocket=newServerSocket(8888); //2.调用accept()方法开始监听,等待客户端的连接 System.out.println("***服务器即将启动,等待客户端的连接***"); Socketsocket=serverSocket.accept(); //3.获取输入流,读取客户端信息 InputStreamis=socket.getInputStream();//字节输入流 InputStreamReaderisr=newInputStreamReader(is);//将字节流转换为字符流 BufferedReaderbr=newBufferedReader(isr);//为输入流添加缓冲 Stringinfo=null; while((info=br.readLine())!=null){//循环读取客户端的信息 System.out.println("这里是服务器,客户端说:"+info);} socket.shutdownInput();//关闭输入流 //4.获取输出流,响应客户端的请求 OutputStreamos=socket.getOutputStream(); PrintWriterpw=newPrintWriter(os); pw.write("欢迎您登录"); pw.flush();//调用flush()方法将缓冲输出 //5.关闭资源 pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); }catch(IOExceptione){ e.printStackTrace(); } } }
    查看全部
  • 基于TCP(传输控制协议)的Socket通信 1.服务器端,创建server,建立服务器端监听socket,对指定端口进行监听,并等待接收连接请求 2.客户端创建连接socket,向服务端发送请求,两者建立连接 3.服务器端同意客户端的请求并接受,创建连接socket与客户端通信 4.建立连接以后,分别通过输入/输出流开始通信,完成数据的接收和响应 5.最后关闭资源,结束通信
    查看全部
  • 处理得了的异常就捕获,处理不了的就传递(抛出) 启动的时候,一定要先启动服务端,再启动客户端
    查看全部
  • 用户登录 客户端步骤
    查看全部
  • 用户登录 服务器端步骤 try { //1.创建一个服务器端Socekt,即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.shutdownInput();//关闭输入流 //4.关闭资源 br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); }
    查看全部
  • Socket通信实现步骤
    查看全部
    0 采集 收起 来源:Socket 简介

    2016-12-17

  • Socket通信模型
    查看全部
    0 采集 收起 来源:Socket 简介

    2016-12-17

  • Socket通信概述
    查看全部
    0 采集 收起 来源:Socket 简介

    2016-12-17

  • public static void main(String[] args) { try { //创建一个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(); } br.close(); isr.close(); is.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
    查看全部
  • URL统一资源定位符 public static void main(String[] args) { try { //创建一个URL实例 URL imooc = new URL("http://www.imooc.com"); URL url = new URL(imooc, "/index.html?username=tom#test");//?后面表示参数,#后面表示锚点 System.out.println("协议:" + url.getProtocol()); System.out.println("主机" + url.getHost()); //如果未指定端口号,则使用默认的端口号80,此时getPort()方法返回值为-1 System.out.println("端口号" + url.getPort()); System.out.println("文件路径"+url.getPath()); System.out.println("文件名"+url.getFile()); System.out.println("相对路径"+url.getRef());//相对路径就是锚点 System.out.println("查询字符串"+url.getQuery());//查询字符串就是参数 } catch (MalformedURLException e) { e.printStackTrace(); } }
    查看全部
  • URL图示
    查看全部
  • public static void main(String[] args) throws UnknownHostException { //获取本机的InetAddress实例 InetAddress address = InetAddress.getLocalHost(); System.out.println("计算机名" + address.getHostName()); System.out.println("IP地址" + address.getHostAddress()); byte[] bytes = address.getAddress();//获取字节数组形式的IP地址 System.out.println("字节数组形式的Ip" + Arrays.toString(bytes)); System.out.println(address);//直接输出InetAddress对象 //根据机器名获取InetAddress实例 //InetAddress address2 = InetAddress.getByName("USER-20160501VP"); InetAddress address3 = InetAddress.getByName("192.168.249.1"); System.out.println("计算机名" + address3.getHostName()); System.out.println("IP地址" + address3.getHostAddress()); }
    查看全部
  • Java网络支持四大类 UDP 用户数据报协议 Datagram 数据报
    查看全部
    0 采集 收起 来源:网络基础简介

    2016-12-17

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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