`
sll1097892736
  • 浏览: 5712 次
  • 性别: 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-文件传输小案例

    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套接字定义与使用

    java中socket套接字定义与使用发起会议:系统具备视频会议功能,点对点聊天可以同时发起一个临时的视频会议,此会议是临时发起的,系统将不存储任何数据。 文件共享:用户可以将很大的文件采取文件共享...

    大工15年春《Java-程序设计》在线作业三100分答案.docx

    Java 提供 ServerSocket 类和 Socket 类实现 TCP Socket 通信。ServerSocket 类提供进行通 信的 Socket 对象。 A. 错误 B. 正确 ----------------- 选择:A 7. Java 编程语言支持多文档界面技术。 A. 错误 B. 正确 ...

    java-websocket-reverse-proxy:Websocket反向代理的Java实现

    java-websocket-reverse-proxy 我发现的大多数Java websocket示例都是基于或包含诸如STOMP之类的消息传递协议的。... 可以通过运行进行测试文件夹中定义的类中包含一个与该代理行为匹配的简单Java实现。

    java源码包---java 源码 大量 实例

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    01_Linux网络编程-网络基础-socket编程-高并发服务器1

    1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等 2. 数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及

    基于Java聊天室的socket设计和实现.docx

    1.1 Java聊天室的定义 3 1.2 Java聊天室的发展历程 4 1.3 Java聊天室的应用场景 5 第二章 Socket编程基础 6 2.1 Socket编程的概念 6 2.2 Socket编程的基本流程 8 2.3 Socket编程的常用API 9 第三章 Java Socket编程...

    Java网络Socket编程

    Socket的概念: ...iii. Java.net包中定义了两个类Socket和ServerSocket,分别用来实现双向连接的client和server端 iv. 建立组件连接时所需要的寻址信息为远程计算机的IP地址和端口号(Port number)

    21天学通Java-由浅入深

    第一篇 基础篇 第1章 Java简介(精彩视频:33分钟) 21 1.1 Java的平台简介 21 1.2 安装工具包 22 1.2.1 下载JDK 22 1.2.2 安装JDK 24 1.2.3 查看与设置环境变量 25 1.2.4 JDK常用命令 27 1.2.5 Java各个目录含义 28...

    simple-socket-protocol:Java的高级网络库,使用WebSocket连接在客户端和服务器之间传输消息

    可以发送简单的Java对象,并定义回调方法以在收到给定类的对象时触发操作。 该库适用于需要简单机制在客户端和服务器之间传输Java对象的应用程序。 如果您需要对连接的更多控制,则此库不适合您。 请尝试项目。建造...

    基于javatcpsocket通信的拆包和装包源码-java-:Java-

    socket通信的拆包和装包源码 java总结 五片内存:寄存器,本地方法区,方法去,堆,栈 堆:数组,对象,也就是封装好的实体 栈:局部变量,堆得变量都有默认初始化 构造代码块:所有的对象进行初始化,所有的对象都会...

    基于java原生Socket实现小区智能快递柜系统源码+项目说明.zip

    基于java原生Socket实现小区智能快递柜系统源码+项目说明.zip 【项目资源介绍】 java原生Socket实现小区智能快递柜系统 java基础知识训练项目,不含任何第三方类库,基于Oracle Jdk 11.0.10 实现功能: 1.连接...

    (超赞)JAVA精华之--深入JAVA API

    1.8 Java Socket编程 1.9 Java的内存泄漏 1.10 抽象类与接口的区别 1.11 Java变量类型间的相互转换 2 JAVA与WEB 2.1 JMX规范 2.1.1 JMX概述 2.1.2 设备层(Instrumentation Level) 2.1.3 代理层 2.1.4 分布服务层 ...

    物联网netty对接socket设备-netty定义

    NIO中的特性之一就是零拷贝,在Java中,内存分为堆和栈以及字符串常量值等等,如果有一些数据从IO中读取并且放到堆里面,中间会经过一些缓冲区。 具体来讲,如果要从IO中读取数据,分为两个步骤: (1)从IO流中读取...

    SocketProxy:旨在拦截和修改传输级别连接的简单代理。 这意味着您还可以修改 TLS 原始字节

    你可以编译它: $ cd SocketProxy $ mvn 清洁包然后,您可以使用以下命令运行它: $ cd 目标$ java -jar SocketProxy-1.0-SNAPSHOT-jar-with-dependencies.jar 然后您可以定义您的侦听端口和转发地址,并启动代理。

    java注册网络聊天室源码-web-socket-lab:使用Tyrus的聊天服务器,JSR356的参考实现

    定义客户端和服务器端点的编程方式和声明方式。 在这篇文章中,我将使用声明式的方式,通过注释。 我们可以监听的生命周期事件:打开/关闭会话、发送/接收消息等 消息编码器/解码器在客户端和服务器之间编组/解组...

    java socket编程

    public class Login extends ... Socket s = null; DataOutputStream dos = null; DataInputStream dis = null; private boolean cont = false; // Thread tRecv = new Thread(new RecvThread()); String address;

    基于socket实现Ping功能的源代码

    基于socket的网络编程技术,用到SOCK_RAW的原始套接字类型。里面对简单ICMP协议和IP协议有着很完整的诠释和定义。可以交流zhaquanmin@163.com

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

Global site tag (gtag.js) - Google Analytics