• 通过TCP建立可靠通讯信道

1)为了对应TCP协议里的客户端和服务器端,Socket包提供了Socket类和ServerSocket类。

2)Socket类构造函数及相关方法

Public Socket();

public Socket(InetAddress address,int port);//本机IP和端口

public Socket(Striing host,int port);//本机IP和端口

public void connect(SocketAddress endpoint);//将本socket连接到endpoint指定的主机上

public void bind(SocketAddress bindpoint);//将本socket绑定到bindpoint指定的主机

public InputStream getInputStream();、public OutputStream getOutputStream();//获取通信输入流和输出流

public void close();//4次握手FIN的封装

public InetAddress getLocalAddress();、public int getPort();//获取本socket对应主机(即本机)的IP和端口

3)ServerSocket类构造函数及相关方法

public ServerSocket();

public Socket(int port);//本服务器socket,端口有参数指定,ip即本地

public Socket accept();//返回描述客户端链接句柄的socket类对象

public void bind(SocketAddress bindpoint);//将本ServerSocket绑定到bindpoint指定的主机

public void close();

public InetAddress getInetAddress()、public int getLocalPort();//获取本机ip和端口

  • 通过UDP高效的发送数据报文

1)DatagramSocket类封装了发送和接受数据报文的方法,DatagramPacket类封装了“数据报文”的属性。

2)DatagramSocket类构造函数及相关方法

Public DatagramSocket();

public DatagramSocket(int port);//本机端口

public DatagramSocket(int port,InetAddress address,);//本机IP和端口

void connect(InetAddress address,int port);//

void send(DatagramPacket p);//

void receive(DatagramPacket p);//

void close();//

InetAddress getLocalAddress();、public int getPort();//

void setSoTimeout(int timeout);//

int getSoTimeout();//

3)DatagramPacket类构造函数及相关方法

DatagramPacket(byte[] buf,int length);//

DatagramPacket(byte[] buf,int length,InetAddress address,int port);//报文长度与报文目的地址

byte[] getData();、int getLength();//配合使用    void setData(byte[] buf);void setLength(int length);//配合使用

InetAddress getAddress();//获取目的主机地址        void setAddress(InetAddress iaddr);//

int getPort();//获取目的主机端口          void setPort(int port);//

  • 面向套接字编程

1)使用套接字实现基于TCP协议的服务器和客户端程序

服务器主要操作:

用一个端口实例化ServerSocket,从而监听该端口的链接请求;

调用accetp方法,接受客户端的连接请求;

利用accept方法返回的客户端socket对象,进行读写IO的操作;

通讯完成,关闭打开的流和socket对象。

客户端主要操作:

用服务器ip和端口初始化socket对象;

调用connect方法,向服务器发起连接请求;

将要发送给服务器的内容填充到IO对象中,如BufferedReader、PrintWriter;

利用getInputStream和getOutputStream方法,向服务器发送和接受数据;

通讯完成,关闭打开的IO对象和socket。

2)使用套接字连接多个客户机————基于多线程的C/S通讯

3)UDP协议与传输数据报文

  • Java远程方法调用(RMI)开发概述————透明的调用远端方法

1)RMI,远程方法调用,可以用来构建Java应用程序间的分布式模型,它允许网络主机之间可以相互地无障碍地调用对方的类和方法,这是实现分布式的基础。把服务的调用者称为RMI客户端,把服务的提供者称为RMI服务器。

JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)的更多相关文章

  1. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  2. 网络编程——TCP协议、UDP协议、socket套接字、粘包问题以及解决方法

    网络编程--TCP协议.UDP协议.socket套接字.粘包问题以及解决方法 TCP协议(流式协议) ​ 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先建立双向通信通道,基于该双向通道实现数 ...

  3. 网络编程之Socket & ServerSocket

    网络编程之Socket & ServerSocket Socket:网络套接字,网络插座,建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(API),对TCP/IP ...

  4. java基础-网络编程(Socket)技术选型入门之NIO技术

    java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...

  5. python | 网络编程(socket、udp、tcp)

    一.套接字 socket 1.1 作用:实现不同主机间的进程间通信(不同电脑.手机等设备之间收发数据) 1.2 分类:udp.tcp 1.3 创建 socket import socket socke ...

  6. java之TCP(Socket,serverSocket)实例

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  7. python语法基础-网络编程-TCP协议和UDP协议

    ###############    网络编程    ############## """ 网络编程 学习了Python基础之后,包括函数,面向对象等,你就可以开发了,你 ...

  8. Python中的socket网络编程(TCP/IP,UDP)讲解

    在网络编程中的一个基本组件就是套接字(socket).套接字基本上是两个端点的程序之间的"信息通道".程序可能分布在不同的计算机上,通过套接字互相发送信息.套接字包括两个:服务器套 ...

  9. 网络、TCP协议与UDP协议

    1.网络模型 (1)什么是网络模型 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外 ...

  10. Java联网技术之一TCP socket

    最近突然对java网络编程编程这一块非常感兴趣,于是找了很多资料,一点点的尝试,下面是自己的一点小见解,不喜勿喷,欢迎指正. 首先说说客户端和服务器端吧, 如果是网页的话,客户端通过网页的链接对服务器 ...

随机推荐

  1. Qt源码分析之QObject

    原文:http://blog.csdn.net/oowgsoo/article/details/1529284 我感觉oowgsoo兄弟写的分析相当透彻,赞! 1.试验代码: #include < ...

  2. HTTP响应消息code解释

    常见HTTP状态(304,200等) 在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Googl ...

  3. javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

    使用hibernate validator出现上面的错误, 需要 注意 @NotNull 和 @NotEmpty  和@NotBlank 区别 @NotEmpty 用在集合类上面@NotBlank 用 ...

  4. Mongodb查询的用法,备注防止忘记

    最近在用这个东西,为防止忘记,记下来. 集合简单查询方法 mongodb语法:db.collection.find()  //collection就是集合的名称,这个可以自己进行创建. 对比sql语句 ...

  5. MySQL增加列,移动列

    ALTER TABLE test ADD COLUMN id INT UNSIGNED NOT NULL auto_increment PRIMARY KEY FIRST 给表添加列是一个常用的操作, ...

  6. 【转载】React初学者入门须知

    http://www.oschina.net/news/75530/9-things-every-reactjs-beginner-should-know react.js入门学习 看了一遍,没什么特 ...

  7. Struts2注解配置之@Namespace(四)

    今天开始学习@Namespace注解. 还是先看一段代码: package com.example.actions; import org.apache.struts2.convention.anno ...

  8. ha_innobase::open

    http://mysql.taobao.org/monthly/2015/08/07/ /******************************************************* ...

  9. bzoj2823

    最小圆覆盖 有个东西叫作随机增量法,具体可以baidu 这里来说说怎么求三点共圆 这其实就是求两条线段的交点 在编程中,我们解方程是比较麻烦的一个比较好的方法是利用相似三角形 设线段AB,CD交P,则 ...

  10. iOS开发:应用生命周期

    iOS应用通过委托对象AppDelegate类在应用周期的不同阶段会回调不同的方法,应用周期分为以下五种状态: Not Running(非运行状态).应用没有运行或被系统终止.   Inactive ...