Java入门笔记9_Socket

珍珍儿974

珍珍儿974

2016-02-19 13:02

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

  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];
展开更多 50%)
分享

猜你喜欢

Java入门笔记9_Socket

编程语言 网络编程
Java入门笔记9_Socket

Java入门(9) JAVA与GUI

编程语言 网络编程
Java入门(9) JAVA与GUI

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java入门笔记3_Datastructure

编程语言 网络编程
Java入门笔记3_Datastructure

Java入门笔记1_HelloWorld

编程语言 网络编程
Java入门笔记1_HelloWorld

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java入门笔记2_Applet

编程语言 网络编程
Java入门笔记2_Applet

Java入门笔记8_JavaTools

编程语言 网络编程
Java入门笔记8_JavaTools

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Excel合并单元格的两种简单方法

Excel合并单元格的两种简单方法

php与ajax一些经验

php与ajax一些经验
下拉加载更多内容 ↓