• 通过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. Java学习笔记之:Java的变量

    一.介绍 在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; 格式 ...

  2. Android:Context的作用

    Context字面意思上下文,Activity中我们直接用this代替,而到了一个button的onClick(View view)等方法时,我们用this时就会报错,改用ActivityName.t ...

  3. iOS 精确定时器

    Do I need a high precision timer? Don't use a high precision timer unless you really need it. They c ...

  4. 转:socket编程在windows和linux下的区别

    如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗 ...

  5. js判断浏览器类型 js判断ie6不执行

    js判断浏览器类型 $.browser  对象 $.browser.version 浏览器版本 var binfo = ''; if ($.browser.msie) { binfo = " ...

  6. cpan 配置

    $ cpan Cpan>o conf init 最主要的是配置镜像地址,试了下,还是香港的靠谱…… cpan中镜像地址列表:http://www.cpan.org/SITES.html 香港的镜 ...

  7. 解决PHP开启gd库无效的问题

    最近需要重新安装PHP,以前一直使用的都是XAMPP,基本上都不需要自己配置,现在准备直接下载官方原版的Apache和PHP,自己来慢慢摸索如何继承配置. 我下载的Apache版本为2.2.25,PH ...

  8. Android开发之三种动画

    转载:http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html http://www.lightskystreet.com/2 ...

  9. Ubuntu 64位系统安装StarUML之最佳实践

    preview 相信很多使用Ubuntu的哥们在安装StarUML或者其他软件时都会遇到要求libgcrypt11的依赖.而遗憾的时,这个东西很多人根本找不到. 我将它分享到百度网盘,mark. 一. ...

  10. uva12230Crossing Rivers

    数学期望. 过每条河的时间的可能在[L/v,3*L/v]间均匀分布,数学期望为2*L/v. 然后在加上在陆上走的时间. #include<cstdio> #include<algor ...