`
sll1097892736
  • 浏览: 5953 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java-Socket定义解释

 
阅读更多

       Socket是网络驱动层提供给应用程序编程的接口和一种机制。我们可以认为Socket是应用程序创建的一个港口码头,应用程序只要把装着货物的集装箱(在程序中就是要通过网络发送的数据)放到港口码头上,就算完成了货物的运送,剩下的工作就有货运公司去处理了(在计算机中由驱动程序来充当货运公司)。

       

        对于接收方来说,应用程序也要创建一个港口码头,然后就一直等待到该码头的货物到达,最后宠码头上取走货物(发给该应用程序的数据)。

 

        Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和Port。此后,应用程序送给Socket 数据,由 Socket 交给驱动程序向网络上发送出去。计算机服务端从网络上收到与该 Socket 绑定的 IP+Port 相关的数据后,由驱动程序交给 Socket,应用程序便可从该Socket 中提取接收到的数据。网络应用程序就是这样通过Socket进行数据的发送与接收的。

 

 

 

 

 



 

 

package com.java.DataGamesocket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
/**
 * UDP(user datagram protocol:用户数据报协议)实例
 * 负责发送数据类
 * @author songlailiang
 *
 */
public class Udpsend {

 private static DatagramSocket ds;

 public static void main(String[] args) {
  send();
 }
 
 public static void send(){
  try {
   ds = new DatagramSocket();        //创建DatagramSocket对象,用于UDP发送或接收数据
   String str = "您好,hello word!";
   DatagramPacket dp = new DatagramPacket(str.getBytes(), //创建发送包对象,
     str.getBytes().length,       //这里最好不要写成str.length,因为如果发送的内容是汉字,一个汉字占用2个字节,接收的时候可能会造成数据接收不全
     InetAddress.getByName("192.168.1.164"), 12345); //设置接收的IP和端口
   ds.send(dp);           //发送数据
  } catch (SocketException e) {
   System.out.println("new DatagramSocket()执行异常");
   e.printStackTrace();
  }catch (UnknownHostException e) {
   System.out.println("new DatagramPacket()执行异常");
   e.printStackTrace();
  } catch (IOException e) {
   System.out.println("ds.send(dp)执行异常");
   e.printStackTrace();
  }finally{
   ds.close();            //关闭socket通道,释放资源
  }
 }
}

 

 

************************************************************************************************

 

 

package com.java.DataGamesocket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
/**
 * UDP(用户数据报协议)实例,负责接收数据类
 * 测试时,要先运行接收程序,再运行发送程序,否则接收不到数据。
 * @author
 *
 */
public class UdpResive {

 private static DatagramSocket ds;
 public static void main(String[] args) {
  resive();
 }

 private static void resive() {
  try {
   ds = new DatagramSocket(12345);       //创建DatagramSocket对象,用于UDP发送或接收数据,指定接收端口
   byte[] buf = new byte[1024];
   DatagramPacket dp = new DatagramPacket(buf , 1024);  //创建接收数据包对象,限定最大是1024个字节
   ds.receive(dp);           //接收数据
   String strresive=new String(dp.getData(),0,dp.getLength())+
     " from "+dp.getAddress().getHostAddress()+":"+dp.getPort();
   System.out.println(strresive);
  } catch (SocketException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   ds.close();      //关闭socket通道,释放资源
  }
 }
 
 public static void send(){
  try {
   ds = new DatagramSocket();        //创建DatagramSocket对象,用于UDP发送或接收数据
   String str = "您好,hello word!";
   DatagramPacket dp = new DatagramPacket(str.getBytes(), //创建发送包对象,
     str.getBytes().length,       //这里最好不要写成str.length,因为如果发送的内容是汉字,一个汉字占用2个字节,接收的时候可能会造成数据接收不全
     InetAddress.getByName("192.168.1.164"), 12345); //设置接收的IP和端口
   ds.send(dp);           //发送数据
  } catch (SocketException e) {
   System.out.println("new DatagramSocket()执行异常");
   e.printStackTrace();
  }catch (UnknownHostException e) {
   System.out.println("new DatagramPacket()执行异常");
   e.printStackTrace();
  } catch (IOException e) {
   System.out.println("ds.send(dp)执行异常");
   e.printStackTrace();
  }finally{
   ds.close();            //关闭socket通道,释放资源
  }
 }
 
}

  • 大小: 975.2 KB
  • 大小: 996.9 KB
分享到:
评论

相关推荐

    JAVA-socket开发指南

    - **定义:** Socket是一种通信协议,它允许不同计算机之间进行网络通信。在Java中,Socket编程是基于TCP/IP协议栈实现的。 - **作用:** Socket为两台计算机上的进程提供了一种端到端的通信机制。通过Socket,一个...

    HP-Socket Development Guide5.6.pdf

    它支持多种编程语言,包括C/C++、C#、Delphi、易语言、Java和Python。该框架广泛适用于各种应用场景的TCP/UDP/HTTP通信系统,并且对通信层进行了完全封装,使得应用程序无需关注通信层的任何细节。框架的主要特性...

    基于Java--Socket-网络编程.doc

    ### 基于Java Socket网络编程的关键知识点 #### 一、网络基础——TCP/IP协议 TCP/IP(Transmission Control Protocol/Internet Protocol)协议是互联网最基本的协议之一,它定义了电子设备如何连接到因特网以及...

    smart-socket 开源的Java AIO框架.zip

    《深入解析Smart-Socket:基于Java AIO的高效网络通信框架》 Smart-Socket是一款开源的Java异步非阻塞I/O(AIO)框架,它以高效、稳定和易于扩展为特点,广泛应用于高性能、高并发的网络通信场景。在Java的世界里,...

    HP-Socket_TCP_&_UDP_通信框架开发指南

    此外,HP-Socket 支持多种编程语言,包括 C/C++、C#、Delphi、E(易语言)、Java 和 Python 等。 **1.2 组件分类** - **服务端组件**:主要用于创建服务器,负责监听端口、接受连接、管理连接状态等。 - **客户端...

    PB-SOCKET开发

    PB的优势在于其高效、跨平台和语言无关性,支持C++, Java, Python等多种编程语言。通过定义.proto文件,我们可以声明数据结构,然后使用PB编译器生成相应的类或接口,方便在代码中操作和序列化/反序列化数据。 ...

    hpsocket开发指南

    在整体架构上,HP-Socket定义了一系列组件接口(如ITcpServer、IUdpClient)、组件实现类(如CTcpServer、CUdpClient)以及监听器接口(如ITcpServerListener、IUdpClientListener)。组件接口定义了操作方法,应用...

    java 网络编程-socket

    Socket可以被理解为网络通信中的一个端点,它由IP地址和端口号两部分组成,这个定义来源于最初的TCP规范(RFC 793)。Socket有两种类型:流式Socket(Stream socket)和数据报Socket(Datagram socket)。 1. 流式...

    api-ntrip-java-client-master.zip_android_ntrip_ntrip java实现_ntr

    - **Android Socket编程**:使用Java的Socket类建立与NTRIP服务器的连接,收发数据。 - **JSON或XML解析**:NTRIP数据可能以这两种格式传输,需要解析成Java对象。 - **Android权限管理**:可能需要获取网络访问权限...

    HTTP-and-Socket.rar_http socket_java socket http_socket_socket

    2. **Java Socket编程**:使用java.net.Socket和ServerSocket类,可以构建TCP Socket通信。对于HTTP,可以基于Socket实现自定义的HTTP客户端和服务器。 3. **HTTP over Socket**:有些情况下,为了实现特定的功能或...

    HPsocket 封包与mina对接

    在Mina中,需要定义一个解码类来处理接收到的数据包。这个解码类继承自`CumulativeProtocolDecoder`,重写`decode`方法来解析数据包。 ```java public class ByteArrayCodecFactory extends ...

    Java网络编程-Socket-文件传输小案例

    import java.nio.channels.SocketChannel; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.ByteBuffer; import java.io.RandomAccessFile; import java.io....

    java socket连接池 实现

    使用HikariCP,我们可以定义最大连接数、最小空闲连接数、连接超时时间等参数,然后在需要时通过调用其API获取Socket连接。 以下是一个简单的Socket连接池实现步骤: 1. 初始化连接池:设置最大连接数、最小连接数...

    Java--Socket通信(客户端服务端双向)

    在Java编程中,Socket通信是实现网络应用程序之间通信的基础。Socket是TCP/IP协议的一部分,它提供了进程间的网络通信。在本文中,我们将深入探讨如何在Java中实现客户端和服务器之间的双向Socket通信。 首先,让...

    Android-netty和socket通信的demo

    在“netty-socket-master”这个压缩包中,可能包含了服务器端和客户端的代码实现,包括Bootstrap的配置、ChannelHandler的定义、数据传输的逻辑等。通过对这些代码的学习和分析,开发者可以深入理解Netty在Android上...

    Java使用socket网络编程详解

    ### Java使用Socket网络编程详解 #### 一、引言 Socket是网络通信的基础,它使得不同计算机间的进程可以通过网络进行通信。本篇文章旨在详细介绍如何在Java中使用Socket进行网络编程,特别是TCP协议下的客户端与...

    关于学习Java-SE的相关代码 Java学习资料

    8. **网络编程**:Java提供Socket编程接口,可以用来编写网络客户端和服务端应用程序,理解TCP/IP和UDP协议的基本概念。 9. **泛型**:泛型引入后,增强了类型安全,减少了强制类型转换,是Java-SE 5.0引入的重要...

    client-server-socket.rar_Server

    在Java中,通常使用`java.net.Socket`类和`java.net.ServerSocket`类来实现客户端和服务器端的通信。服务器端创建一个`ServerSocket`实例监听指定端口,等待客户端的连接;客户端创建`Socket`对象,指定服务器地址和...

    android各组件详解- Socket

    - **定义**:Socket通常被称为“套接字”,它是网络通信的一种抽象表示形式,用于描述IP地址和端口号。简单来说,Socket提供了一种在不同计算机之间建立连接的方式。 - **功能**:应用程序通过Socket向网络发送请求...

Global site tag (gtag.js) - Google Analytics