一、基本概念

1.网络程序:

能够接受另一台计算机发送过来的数据或者能够向另一台计算机发送数据的程序叫做网络程序。

2.IP

能够在网络中唯一标示一台主机的编号就是IP

3.端口号

16位数字表示

4.协议

进行网络中数据交换(通信)而建立的规则、标准或者约定。

分类:TCP:面相连接的可靠的传输的连接,类似打电话

UDP:是无连接的不可靠的传输协议,类似写信

二、套接字Socket

1.基于UDP的Socket编程

步骤:1.定义码头  Datagram Socket对象ds

2.定义可以用来接受或发送数据的集装箱     DatagramPacket对象dp

3.在码头上用集装箱接收对方发来的数据ds.receive(dp))

或者在码头上把集装箱的数据发送给对方ds.send(dp))

4.关闭码头    ds.close()

基于UDP的socket编程实例——服务器与客户端之间的通信

服务器端

package UDPsocketTest;
import java.net.*;
import java.io.*; //UDP的服务器端
public class TestUDPServer {
public static void main(String[] args)throws Exception{
DatagramSocket ds=new DatagramSocket(5678);//5678是端口号
byte buf[]=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
try{
while(true){
ds.receive(dp);
//从集装箱中取出对方放松过来的数据
ByteArrayInputStream bais=new ByteArrayInputStream(dp.getData());
DataInputStream dis=new DataInputStream(bais);
System.out.println(ds.readLong());
}
}
catch(Exception e){
e.printStackTrace();
ds.close();
}
}
}

客户端

package UDPsocketTest;
import java.net.*;
import java.io.*; //服务器端
public class TestUDPClient {
public static void main(String[] args) throws Exception{
DatagramSocket ds=new DatagramSocket();
long n=1000L;
ByteArrayOutputStream baos=new ByteArrayOutputStream();
DataOutputStream daos=new DataOutputStream(baos);
daos.writeLong(n);
byte[] buf=baos.toByteArray();
DatagramPacket dp=new DatagramPacket(buf,buf.length,new InetSocketAddress("127.0.0.1",5678));
ds.send(dp);
ds.close();
}
}

Java网络通信的更多相关文章

  1. Java程序员从笨鸟到菜鸟之(十三)java网络通信编程

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 首先声明一下,刚开始学习java网络通信编程就对他有一种畏惧感,因为自己对网络一窍不通,所 ...

  2. java网络通信:异步非阻塞I/O (NIO)

    转: java网络通信:异步非阻塞I/O (NIO) 首先是channel,是一个双向的全双工的通道,可同时读写,而输入输出流都是单工的,要么读要么写.Channel分为两大类,分别是用于网络数据的S ...

  3. Java网络通信初步认知

    本文转载自:http://wing011203.cnblogs.com/ 在这篇文章里,我们主要讨论如何使用Java实现网络通信,包括TCP通信.UDP通信.多播以及NIO. TCP连接 TCP的基础 ...

  4. Java 网络通信相关

    http://m.blog.csdn.net/xiaojin21cen/article/details/78587541 越下面越底层 , 最后面的都是框架 , 下面的是 编程语言提供的库的 NIO ...

  5. java网络通信编程

    网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴.在发送和接收数据时,大部分的程序设计语言都设 ...

  6. java网络通信不止UDP,TCP

    预备知识 多线程 实现多线程 线程池 IO流 核心功能就是读和写 扩展功能对什么读写,怎么读写,如何优化读写 网络基础 IP IP规定网络上所有的设备都必须有一个独一无二的IP地址,就好比是邮件上都必 ...

  7. Java网络通信——XML和JSON

    XML(Extensible Markup Language) 定义:一种可扩展的标记性语言 XML有丰富的编码工具,比如Dom4j.JDom等. JSON(JavaScript Object Not ...

  8. java网络通信之非阻塞通信

    java中提供的非阻塞类主要包含在java.nio,包括: 1.ServerSocketChannel:ServerSocket替代类,支持阻塞与非阻塞: 2.SocketChannel:Socket ...

  9. java 网络通信传输层协议——UDP和TCP

    本文原文由作者“zskingking”发表于:jianshu.com/p/271b1c57bb0b,本次收录有改动. 1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯网专注的即时通 ...

随机推荐

  1. JavaScript经典代码【二】【javascript判断用户点了鼠标左键还是右键】

    IE 下 onMouseDown 事件有个 events.button 可以返回一个数值,根据数值判断取得用户按了那个鼠标键 events.button==0 默认.没有按任何按钮. events.b ...

  2. CUBRID学习笔记 47 show

    cubrid的中sql查询语法show c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . ...

  3. 2.mybatis入门实例 连接数据库进行查询

    1.新建项目,添加mybatis和mysql的jar包 2.在mysql中新建表user[id,name,age] CREATE TABLE `users` ( `id` ) NOT NULL aut ...

  4. Python基础学习笔记(一)入门

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://w ...

  5. iOS - AFNetworking 网络请求

    前言 在 iOS 开发中,一般情况下,简单的向某个 Web 站点简单的页面提交请求并获取服务器的响应,用 Xcode 自带的 NSURLConnection 是能胜任的.但是,在绝大部分下我们所需要访 ...

  6. MySql 去重且指定某字段在前的排序方法

    今天遇到一个棘手的数据查找并去重的问题: 情况: 1.取出数据库中的数据: 2.同一字段A,不同情况<值,如A值为:a1,a2>下取出的其他数据可能相同: 3.将2情况下的重复数据< ...

  7. ajax 、ajax的交互模型、如何解决跨域问题

    1.ajax是什么? — AJAX全称为“AsynchronousJavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术. — 不是一种新技 ...

  8. HTML字符实体

    常用实体符号:

  9. 线程高级应用-心得6-java5线程并发库中同步工具类(synchronizers),新知识大用途

    1.新知识普及 2. Semaphore工具类的使用案例 package com.java5.thread.newSkill; import java.util.concurrent.Executor ...

  10. asp.net 柱形图

    在vs中,如果要使用柱形图,我们大多数使用第三方提供的插件,所以必须要引用样式,这里我使用的是Highcharts-4.1.9插件,百度一下就可以下载到. 关键的js代码: <script sr ...