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

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

难度初级
时长 2小时 0分
学习人数
综合评分9.77
496人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 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、传输层:TCP/IP协议 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协议,将数据保存在数据报中,通过网络进行通信。
    查看全部
    16 采集 收起 来源:网络基础简介

    2014-12-27

  • 通信过程(Socket通信模型): 1、在服务端建立一个ServerSocket,绑定相应的端口,并且在指定的端口进行侦听,等待客户端的连接。 2、当客户端创建连接Socket并且向服务端发送请求。 3、服务器收到请求,并且接受客户端的请求信息。一旦接收到客户端的连接请求后,会创建一个链接socket,用来与客户端的socket进行通信。 通过相应的输入/输出流进行数据的交换,数据的发送接收以及数据的响应等等。 4、当客户端和服务端通信完毕后,需要分别关闭socket,结束通信。 ServerSocket常用方法: ServerSocket(int port)——创建并绑定到特定端口的服务器套接字 accept()——侦听并接受到此套接字的连接 close()——关闭此套接字 getInetAddress()——得到ServerSocket对象绑定的IP地址。如果ServerSocket对象未绑定IP地址,返回0.0.0.0。 getLocalPort()——返回此套接字在其上侦听的端口 Socket常用方法: Socket(InetAddress address, int port)——创建一个套接字并将其连接到指定ip地址的指定端口号 Socket(String host, int port)——创建一个套接字并将其连接到指定主机上的指定端口号 close()——关闭此套接字 getInetAddress()——返回套接字连接的地址 getInputStream()——返回此套接字的输入流 getOutputStream——返回此套接字的输出流
    查看全部
    11 采集 收起 来源:Socket 简介

    2015-08-30

  • 步骤: (1)创建ServerSocket和Socket (2)打开连接到Socket的输入/输出操作 (3)按照协议对Socket进行读/写操作 (4)关闭输入输出流,关闭Socket 服务器端: (1)创建ServerSocket对象,绑定监听器 (2)通过accept()方法监听客户端请求 (3)连接建立以后通过读取客户端发送请求消息 (4)通过输出流向客户端发送响应信息 (5)关闭资源 客户端: (1)创建Socket对象,指明需要连接的服务器地址和端口号(1023以后的端口) (2)连接建立后,通过输出流向服务器端请求 (3)通过输入流获取服务器响应信息 (4)关闭资源 常用I/O操作 InputStream is = socket.getInputStream();//字节输入流 InputStreamReader isr = new InputStreamReader(is)//将字节输入流转换为字符输入流 BufferedReader br = new BufferedReader(isr);//为输入流添加缓冲 br.readLine()按行读取 flush()刷新缓存
    查看全部
  • 1.InetAddress类没有构造方法,所以不能直接new出一个对象; 可以通过InetAddress类的静态方法获得InetAddress的对象; InetAddress.getLocalHost(); InetAddress.getByName(""); 2.类主要方法: String - address.getHostName(); String - address.getHostAddress(); public static InetAddress getByName(String host) throws UnknownHostException 在给定主机名的情况下确定主机的 IP 地址。 主机名可以是机器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式
    查看全部
  • 服务端: 1、创建ServerSocket对象,绑定监听端口 2、通过accept()方法监听客户端请求 3、连接建立后,通过输入流读取客户端发送的请求信息 4、通过输出流向客户端发送响应信息 5、关闭相关资源 客户端: 1、创建Socket对象,指明需要连接的服务器的地址和端口号 2、连接建立后,通过输出流向服务器端发送请求信息 3、通过输入流获取服务器相应的信息 4、关闭相关资源。
    查看全部
  • UDP编程 1、UDP协议(用户数据报协议)是无连接、不可靠、无序的。 2、UDP协议以数据报作为数据传输的载体。 3、使用UDP进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明所要达到的Socket(主机地址和端口号),然后在将数据报发生出去。 4、相关操作类:DatagramPacket:表示数据报包 DatagramSocket:进行端到端通信的类 DatagramPacket类构造方法: 1、DatagramPacket(byte[] buf,int length)//接受长度为length的数据包 2、DatagramPacket(byte[] buf,int length,InetAddress address,int port)//将指定长度的字节发生到指定主机的指定端口 DatagramSocket类 1、构造方法:DatagramSocket(); DatagramSocket(int port,InetAddress laddr); 2、close();//关闭DatagramSocket 3、getInetAddress();//获取地址 4、getPort();//获取端口号 5、send(DatagramPacket p);//从此套接字发送数据包 recrive(DatagramPacket p);//从此套接字接收数据包
    查看全部
    7 采集 收起 来源: DatagramPacket

    2016-10-19

  • url:统一资源定位符:表示internet上的网络资源<br> 协议+资源名称<br> url常用方法:<br> 存在java.net包中,提供创建url/子url,获取url等方法<br> 第一步:创建实例<br> URL imooc=new URL("http://www.imooc.com");<br> //在原有url下再创建url<br> URL url=new URL(imooc,"/index.html?username=tom#test")<br> //获取url的信息<br> url.getProtocol();//获取协议http<br> url.getHost();//获取主机www.imooc.com<br> url.getPort();//获取端口号:-1<br> url.getPath();//获取文件路径/index.html<br> url.getFile();//获取文件名/index.html?username=tom<br> url.getRef();//获取相对路径test<br> url.getQuery();//查询字符串username=tom<br> 注:创建url时没有指定端口号则getPort方法返回-1,协议不同会使用默认端口 2url读取网页内容:<br> URL url=new URL("http://www.baidu.com");<br> //获取输入流通过openStream方法<br> InputStream is=url.openStream();<br> //转化成字符输入流<br> InputStream isr=new InputStreamReader(is);<br> //加缓冲提高读取效率<br> BufferedReader br=new BufferedReader();<br> String date=br.teadline(); while(date.next()){System.out.print(date); date=br.readLine(); } 完成后要关闭资源相关资源:br,isr字符输入流,is字节输入流 注:如果输出是乱码则要在is字节输入流中规定编码为 InputStream isr=new InputStreamReader(is,"utf8");<br>
    查看全部
  • 基于UDP的多线程实现多客户端通信 服务器端: DatagramSocket socket=new DatagramSocket(8818); byte[] data=new byte[1024]; System.out.println("****服务器启动,等待客户端连接****"); int count=1; while(true){ DatagramPacket packet=new DatagramPacket(data, data.length); socket.receive(packet); ServerThread serverThread=new ServerThread(packet, socket); serverThread.start(); System.out.println("客户端数量:"+count++); 服务器线程处理类: public class ServerThread extends Thread { DatagramPacket packet; DatagramSocket socket; public ServerThread(DatagramPacket packet, DatagramSocket socket) { super(); this.packet = packet; this.socket = socket; } public void run(){ //获取客户端信息 byte[] data=packet.getData(); String info1=new String(data, 0, packet.getLength()); System.out.println("客户端说:"+info1); //响应客户端 InetAddress address=packet.getAddress(); int port=packet.getPort(); byte[] data1="欢迎您!".getBytes(); DatagramPacket packet1=new DatagramPacket(data1, data1.length, address, port); } }
    查看全部
  • client.java /* * 客户端 */ public class Client { public static void main(String[] args) { try { //1.创建客户端Socket,指定服务器地址和端口 Socket socket=new Socket("localhost", 8888); //2.获取输出流,向服务器端发送信息 OutputStream os=socket.getOutputStream();//字节输出流 PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流 pw.write("用户名:alice;密码:789"); pw.flush(); socket.shutdownOutput();//关闭输出流 //3.获取输入流,并读取服务器端的响应信息 InputStream is=socket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String info=null; while((info=br.readLine())!=null){ System.out.println("我是客户端,服务器说:"+info); } //4.关闭资源 br.close(); is.close(); pw.close(); os.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
    查看全部
  • 基于UDP的Socket通信.(服务器端) 接收客户端的信息 1.先创建服务器端DatagramSocket,参数指定端口. DategramSocket socket=new DatagramSocket(8800); 2.创建数据报,用于接收客户端发送的数据. 先创建字节数组存放数据. byte []data=new byte[1024]; DategramPacket packet=new DatagramPacket(data,data.length); 3.接收客户端发送的数据 socket.receive(packet) //receive()方法用于接收数据存放在数据报中,参数为数据报DatagramPacket的实例. String info=new String(data,0,packet.getLength()); //getLength()方法可以获取数据报的长度. 向客户端响应数据 1.定义客户端的地址、端口号、数据(通过客户端传来的数据的所存放的DatagramPacket的实例获取) InetAddress address=packet.getAddress(); //从服务器端存放客户端的数据报中获取客户端的地址,通过getAddress()方法. int port=packet.getPort(); //通过getPort()方法获取客户端的端口. byte [] data2="欢迎你".getBytes(); //把字符串转为字节数组 2.创建数据报,包含响应的数据信息 DatagramPacket packet2=new DatagramPacket(data2,data2.length,address,port) 3.响应客户端 socket.send(packet2); //把服务器端要进行响应的数据报发送给客户端,不需要创建新的DatagramSocket对象,一个即可. 4.关闭资源. socket.close() //关闭此套接字.
    查看全部
  • 1、多线程的优先级(死循环中注意设置优先级问题。)建议降低优先级。 2、关闭socket流,而不提倡关闭输入输出流。 3、使用tcp通信传输对象更符合面向对象编程的思想。 4、通过socket编程传输文件的功能模块是:通过io流读取文件字符流进行传输。
    查看全部
    6 采集 收起 来源:Socket 总结

    2015-08-26

  • UDP客户端 1.定义服务器的地址、端口号、数据 InetAddress address = InetAddress.getByname("localhost"); int port = 8800; byte[] data = "用户名:admin;密码:123".getBytes(); 2.创建数据报,包含发送的数据信息 DatagramPacket packet = new DatagramPacket(data,data.length,adress,port); 3.创建DatagramSocket对象 DatagramSocket socket = new DatagramSocket(); 4.向服务器端发送数据报 socket.send(packet);
    查看全部
  • URL 1.URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址。 2.URL由两部分组成:协议名称和资源名称,中间用冒号隔开。 3.在java.net中提供了URL类来表示URL。 使用URL读取网页的内容 1.通过URL对象的openStream()方法可以得到指定资源的输入流。 2.通过输入流可以读取、访问网络上的数据。 ---------------------------------------- //创建一个URL实例 URL imooc=new URL("http://www.imooc.com"); //?后面表示参数,#后面表示锚点 URL url=new URL(imooc, "/index.html?username=tom#test"); //主要方法: //getProtocol();getHost();getPort();getPath();getFile();getRef();getQuery(); //读取网页内容 //通过URL的openStream方法获取URL对象所表示的资源的字节输入流 InputStream is = url.openStream();
    查看全部
  • * UDP相较于TCP,不需要进行复杂的设定输入输出流,只需要设定数据报,即DatagramPacket。而TCP的发送以及接收消息,是通过socket.getInputStream()或者getOutputStream()方法,而UDP是直接设置了,DatagramSocket,通过其send()或者receive()方法来接收或发送消息。TCP的关键组成有server端的ServerSocket.accept()方法,这个方法是直到接收到了客户端的连接才会返回一个Socket,用于接下来的输入和输出。所以说,TCP的数据传输是需要提前连接、三方握手,数据传输非常安全。而UDP是不需要提前连接的,无需等待对方回答,所以不保证数据不丢失。
    查看全部
  • 如何实现发送文件 客户端: * 新建文件字节输入流 * 循环将输入流写入到发送的输出流中 Socket socket=new Socket("localhost", 8881); OutputStream os=socket.getOutputStream(); File file=new File("e:/Table.java"); FileInputStream fs=new FileInputStream(file); byte[] data=new byte[1024*4]; int length; while((length=fs.read(data))!=-1){ os.write(data, 0, length); os.flush(); } socket.shutdownOutput(); socket.close(); os.close(); fs.close(); 服务器端: * 新建文件字节输出流 * 循环将接收到输入流写入到文件字符输出流 ServerSocket server =new ServerSocket(8881); Socket socket=server.accept(); InputStream is=socket.getInputStream(); File file=new File("e:/153.java"); FileOutputStream fs=new FileOutputStream(file); byte[] data=new byte[1024*4]; int length; while((length=is.read(data))!=-1){ fs.write(data, 0, length); fs.flush(); } socket.shutdownInput(); server.close(); socket.close(); is.close(); fs.close();
    查看全部
首页上一页1234567下一页尾页

举报

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

微信扫码,参与3人拼团

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

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