Java入门笔记9_Socket

2016-02-19 13:02 4 1 收藏

有了下面这个Java入门笔记9_Socket教程,不懂Java入门笔记9_Socket的也能装懂了,赶紧get起来装逼一下吧!

【 tulaoshi.com - 编程语言 】


  1. Client/Server Networking
  Java通过socket来完成它所有的网络底层的通讯,socket是一种通讯的通道,通过它可以将数据通过特定的端中发送及接收。Java中的socket可以分成二大类:
  
  (1) Datagram Sockets:数据包socket;
  
  (2) Stream Sockets:流socket;
  
  1.2 Datagram Socket
  Datagram socket使用UDP来实现数据通讯,因此它不能保证数据能够到达目的地,但是由于它不需要专用的网络链接,所以它所需的资源相对少的多。
  
  Datagram以包的方式发送数据,但它不能保证这些数据包以特定的顺序到达目的,因此包中往往需要包含序列号的信息,接收方可以根据序列号的信息决定是否所有的包都已收到,并按正常顺序重组这些包。
  
  Java通过两个类DatagramSocket和DatagramPacket来支持Datagram socket。DatagramSocket实现了Datagram socket的基本功能,而DatagramPacket则提供了对包的一些支持。
  
  DatagramSocket的几个重要方法:
  
  (1) DatagramSocket():随机绑定一个有效的端口;
  
  (2) DatagramSocket(int port):绑定指定的端口;
  
  (3) Void send(DatagramPacket p):发送数据报,由于目的地的地址信息已包含在数据报中,所以不需要在本函数中提供地址信息;
  
  (4) synchronized void receive(DatagramPacket p):接收数据包,线程安全;
  
  (5) synchronized void close():关闭socket;
  
  在DatagramSocket中并不区分ServerSocket和ClientSocket,假如一定要区分,那么发送的是client,而接收的是server。
  
  DatagramPacket有以几个重要的方法:
  
  (1) DatagramPacket(byte ibuf[], int ilength):用于接收数据报;
  
  (2) DatagramPacket(byte ibuf[], int ilength, InetAddressiaddr, int iport):用于发送的数据报;
  
  (3) byte[] getData()
  
  (4) int getLength()
  
  以下是完整的Datagram Socket的例子:
  
  接收端,Server端代码:
  
  import java.io.*;
  
  import java.net.*;
  
  
  
  class FortuneServer1 extends Thread
  
  {
  
   DatagramSocket ServerSocket;
  
   public FortuneServer1()
  
   {
  
  super("FortuneServer1");
  
  try
  
   {
  
  ServerSocket = new DatagramSocket(1114);
  
  System.out.println("FortuneServer up and running...");
  
   }
  
  catch (SocketException e)
  
   {
  
  System.err.println("Exception: couldn't create datagram socket");
  
  System.exit(1);
  
   } }
  
  
  
   public static void main(String[] args)
  
   {
  
   FortuneServer1 server = new FortuneServer1();
  
   server.start();
  
   }
  
  
  
   public void run()
  
   {
  
   if (ServerSocket == null)
  
   return;
  
  
  
   while (true)
  
   {
  
   try
  
   {
  
   InetAddress address;
  
   int port;
  
   DatagramPacket packet;
  
   byte[] data = new byte[256];

来源:http://www.tulaoshi.com/n/20160219/1602806.html

延伸阅读
前言 学习完了第一个java程序,之后就来系统的学习java。先从基础语法开始,这个语法你也可以理解为英语或是汉语里面的语法,只不过大家各有各的特点和区别。学习编程其实也是一个编程语言的学习过程。我们在学习英语的时候都说,要想学习好英语一定要动口说,那么在学习编程的时候你一定要动手写。编程无非就是一个写代码的过程,首要就是你...
  学习Java已经很长时间了,但是总感觉基础不是很好,有时候遇到一些平时不常见的问题就会无从下手,也从侧面显现了自己的一些问题。所以,打算写Java的随手笔记来巩固基础,加强学习。今天是第一篇,主要是java的安装,配置,也就是常说的Hello world。   一、下载   进入Oracle的官网,下载Java的jdk,   ...
        Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。在Java中,有专门的Socket类来处理用户的请求和响应。利用Socket类的方法,就可以实现两台计算机之间的通讯。这里就介绍一下在Java中如何利用Socket进行网络编程。 ...
事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工作.Socket就是其中之一.对于Java而言.这些Api存在与java.net 这个包里面.因此只要导入这个包就可以准备网络编程了. 网络编程的基本模型就是客户机到服务器模型....
1. Java中的访问控制 表1-1 可见/访问性 public protected package private 在同一类中 yes yes yes Yes 同一包中 yes yes yes no 不同包中 yes No No No 同一包的子类中 yes yes ...

经验教程

87

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部