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

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

难度初级
时长 2小时 0分
学习人数
综合评分9.77
496人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 主线程负责创建socket * 一个线程用来读取 * 一个线程用来写入,用两个内部类 * 要用多线程实现,send线程和recived线程同时访问buff数据区。 * 发送完成后notify,接收线程。接收线程自身wait * 接收的说,我先wait一下,可能缓存中还没有数据,我会拿到空值得。 * 发送的说Ok,我先写,写完了我notifyall你。我就一直锁着,这样默契的合作了。变成并行处理了 每个客户端连接服务端都会产生一个新的socket。
    查看全部
  • 服务器端: //1.创建一个serverSocket,绑定监听端口 ServerSocket serversocket=new ServerSocket(8888) //2.调用accep()方法开始监听,等待客户端连接 Syetem.out.println("服务器即将启动 等待客户端连接") Socket socket=new serverSocket accept(); //3.获取输入流,用来读取客户端发送的信息 InputStream is=socket.getInputStream(is)//直接输入流; InputStreamReader isr=new InputStreamReader(is)://将字节输入流转换为字符输入流 BufferedReader br=new BufferedReader(isr)://为输入流添加缓冲 String data=br.readLine(); while (data!=null){//循环读取 System.out.println("我是服务器,客户端说:"data); data=br.readLine(); } //关闭输入流,防止造成阻塞 socket.shutdownInput(); //关闭资源 br.close(); isr.close(); socket.closr() serversocket.close();
    查看全部
  • 服务器端实现步骤: 1、创建DatagramSocket,指定端口号 2、创建DatagramPacket 3、接收客户端发送的数据信息 4、读取数据 客户端: 1、定义发送信息 2、创建DatagramPacket:包含将要发送信息 3、创建DatagramSocket 4、发送数据 服务端具体代码: 1、创建服务器端DatagramSocket DatagramSocket socket=DatagramSocket(8800); 2、创建数据报,用户接收客户端发送的数据 byte[] data=new byte[1024]; DatagramPacket packet=new datagramPacket(data,data.length); 3、接收客户端发送的数据 socket.receive(packet);//会处于阻塞,直到接收到数据报 4、读取数据 String info=new String(data,0,packet.getLength()); System.out.println("客户端说"+info)
    查看全部
  • 这是一种正确、严谨的写法。 验证非NULL是编码中很重要的一环。假如本来就是NULL,这是调用各自的close()方法是会报错的。 如果在实例化这些对象时出错导致这些对象为NULL,或是实例化没问题但中途出了什么异常导致这些对象为NULL,都会在未经验证非NULL前尝试调用close()方法关闭时报错。 p.s. 讲师写socket关闭条件时写的是if(socket!=null)socket.close();这样写没错,但我想说一般是另一种写法if(!socket.isClosed())socket.close();
    查看全部
  • http://img1.sycdn.imooc.com//54a131120001913912000530-120-68.jpg Socket编程 一、网络基础知识 两台计算机要通过网络进行通信必备条件a、唯一的标识IP地址 b、需要共同的语言--协议 c、辨别不同的应用程序--端口号。 1.IP地址 每台计算机的唯一标识,用来区分网络中的不同主机,是两台主机进行网络通信必不可少的。IPV4 2、协议: a、TCP/IP协议:目前世界上应用最为广泛的协议。是以TCP和IP为基础的不同层次上多个协议的集合。也称为:TCP/IP协议族或者TCP/IP协议栈 b、TCP Transmission Control Protocol传输控制协议 c、IP Internet Protocol 互联网协议 d、TCP/IP模型(网络分层) 1:物理层,网线…… 2: 数据链路层 3:网络层 4:传输层 5:应用层:HTTP超文本传输协议、FTP文件传输协议、SMTP简单邮件传送协议、Telnet远程登录服务 3、端口号: a、用于区分不同的应用程序 b、端口号范围为0-65535,其中0-1023为系统所保留; c、IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和 UDP的基础 d、常用端口号:http:80;ftp:21;telnet:23 java中的网络支持 针对网络通信的不同层次,java提供的网络功能有四大类 1、InetAddress:用于标识网络上的硬件资源(IP地址) 2、URL:统一资源定位符--通过URL可以直接读取或写入网络上的数据 3、Sockets:使用TCP协议实现网络通信的Socket相关的类 4、Datagram:使用UDP协议。将数据保存在数据报中,通过网络进行通信
    查看全部
    5 采集 收起 来源:网络基础简介

    2015-03-18

  • 为什么听出了王自健的味道。。。
    查看全部
  • 套接字 - 通信 要通过Internet进行通信,至少需要一对套接字,其中一个运行在客户端,称之为ClientSocket,另一个运行于服务器端面,称为ServerSocket。根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认。 服务器监听是指服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 客户端请求是由客户端的套接字提出连接请求,要连接的目标是服务器端套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后再向服务器端套接字提出连接请求。 连接确认是当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。而服务器端继续处于监听状态,继续接收其他客户端的连接请求。 使用套接字进行数据处理有两种基本模式:同步和异步。 同步模式: 同步模式的特点是在通过Socket进行连接、接收、发送数据时,客户机和服务器在接收到对方响应前会处于阻塞状态,即一直等到收到对方请求进才继续执行下面的语句。可见,同步模式只适用于数据处理不太多的场合。当程序执行的任务很多时,长时间的等待可能会让用户无法忍受。 异步模式: 异步模式的特点是在通过Socket进行连接、接收、发送操作时,客户机或服务器不会处于阻塞方式,而是利用callback机制进行连接、接收、发送处理,这样就可以在调用发送或接收的方法后直接返回,并继续执行下面的程序。可见,异步套接字特别适用于进行大量数据处理的场合。 使用同步套接字进行编程比较简单,而异步套接字编程则比较复杂。
    查看全部
    4 采集 收起 来源: DatagramPacket

    2015-10-07

  • 我还没看到数据库,一脸懵逼,╮(╯╰)╭,回头再来做,。。。
    查看全部
  • @Socket——Socket简介 一、Socket通信 1、TCP协议书【面向连接】、【可靠】、【有序的】、以【字节流】的方式发送数据 2、基于TCP协议实现网络通信的类 · 客户端的Socket类 · 服务器端的ServerSocket类 二、Socket通信模型 1、如图 三、Socket通信实现步骤 1、创建ServerSocket和Socket 2、打开连接到Socket的输入/输出流 3、按照协议对Socket进行读/写操作 4、关闭输入输出流、关闭Socket
    查看全部
    4 采集 收起 来源:Socket 简介

    2015-02-04

  • 通信过程(Socket通信模型): 1、在服务端建立一个ServerSocket,绑定相应的端口,并且在指定的端口进行侦听,等待客户端的连接。 2、当客户端创建连接Socket并且向服务端发送请求。 3、服务器收到请求,并且接受客户端的请求信息。一旦接收到客户端的连接请求后,会创建一个链接socket,用来与客户端的socket进行通信。 通过相应的输入/输出流进行数据的交换,数据的发送接收以及数据的响应等等。 4、当客户端和服务端通信完毕后,需要分别关闭socket,结束通信。
    查看全部
    3 采集 收起 来源:Socket 简介

    2015-01-01

  • InetAddress类没有构造方法,所以不能直接new出一个对象; 可以通过InetAddress类的静态方法获得InetAddress的对象; InetAddress.getLocalHost(); InetAddress.getByName(""); 类主要方法: String - address.getHostName(); String - address.getHostAddress(); public static InetAddress getByName(String host) throws UnknownHostException 在给定主机名的情况下确定主机的 IP 地址。 主机名可以是机器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式。
    查看全部
  • 服务器向客户端进行响应 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();
    查看全部
  • 实现基于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();
    查看全部
  • 有人问:“打开输入流之前要调用shutdownoutput方法,反之也一样,原理不明白,但是如果不这么做,客户端和服务器都没法接收信息并输出,很奇怪” 其实是因为老师接受信息是使用BufferedReader的readLine()方法,这个方法是以\r\n作为界定符的,由于发送消息的那一端用的是PrintWriter的write()方法,这个方法并没加上\r\n,所以接收端会一直等待。 你可以在write()后输入PrintWriter的println(),也可以直接用println()取代write()发送消息。或者是和老师一样,直接调用发送端的socket的shutdownOutput()方法,这样会直接关闭输出流,接收端的readLine()就会知道消息传输结束了,不会一直卡在那等\r\n的界定符了。 这里不推荐用shutdownOutput()或shutdownInput()方法,这两个方法应该都是有特殊用途时才用的,同时关闭了后不能再次调用getInputStream()或是getOutputStream(),不然会抛出异常。
    查看全部
  • 请问这是什么数据库啊。。能直接存文件的。。。。
    查看全部

举报

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

微信扫码,参与3人拼团

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

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