JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)
- 通过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开发概述)的更多相关文章
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- 网络编程——TCP协议、UDP协议、socket套接字、粘包问题以及解决方法
网络编程--TCP协议.UDP协议.socket套接字.粘包问题以及解决方法 TCP协议(流式协议) 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先建立双向通信通道,基于该双向通道实现数 ...
- 网络编程之Socket & ServerSocket
网络编程之Socket & ServerSocket Socket:网络套接字,网络插座,建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(API),对TCP/IP ...
- java基础-网络编程(Socket)技术选型入门之NIO技术
java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...
- python | 网络编程(socket、udp、tcp)
一.套接字 socket 1.1 作用:实现不同主机间的进程间通信(不同电脑.手机等设备之间收发数据) 1.2 分类:udp.tcp 1.3 创建 socket import socket socke ...
- java之TCP(Socket,serverSocket)实例
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- python语法基础-网络编程-TCP协议和UDP协议
############### 网络编程 ############## """ 网络编程 学习了Python基础之后,包括函数,面向对象等,你就可以开发了,你 ...
- Python中的socket网络编程(TCP/IP,UDP)讲解
在网络编程中的一个基本组件就是套接字(socket).套接字基本上是两个端点的程序之间的"信息通道".程序可能分布在不同的计算机上,通过套接字互相发送信息.套接字包括两个:服务器套 ...
- 网络、TCP协议与UDP协议
1.网络模型 (1)什么是网络模型 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外 ...
- Java联网技术之一TCP socket
最近突然对java网络编程编程这一块非常感兴趣,于是找了很多资料,一点点的尝试,下面是自己的一点小见解,不喜勿喷,欢迎指正. 首先说说客户端和服务器端吧, 如果是网页的话,客户端通过网页的链接对服务器 ...
随机推荐
- Hibernate逍遥游记-第10章 映射继承关系-002继承关系树中的根类对应一个表(discriminator、subclass)
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- C++:虚函数的详解
5.4.2 虚函数详解 1.虚函数的定义 虚函数就是在基类中被关键字virtual说明,并在派生类重新定义的函数.虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问 ...
- 【Todo】抽象渗漏法则 & 找到理想员工 & 软件开发成功 12 法则 & Joel on Software
Joel应该是个软件专家,这是他文章汇总的中文版本: http://local.joelonsoftware.com/wiki/Chinese_%28Simplified%29 其中有几篇值得好好看看 ...
- hdu 4941 Magical Forest ( 双重map )
题目链接 题意: 有一个n*m的田地,里边有k棵树,每棵树的位置为(xi,yi),含有能量值ci.之后又q个询问,分三种; 1)1 a b,将a行和b行交换 2)2 a b,将a列和b列交换 3)3 ...
- bzoj1412: [ZJOI2009]狼和羊的故事
空地之间开始没有连然后一直WA...题意混乱...尴尬. #include<cstdio> #include<cstring> #include<iostream> ...
- Facebook存储技术方案:找出“暖性BLOB”数据
Facebook公司已经在其近线存储体系当中彻底弃用RAID与复制机制,转而采用分布式擦除编码以隔离其所谓的“暖性BLOB”. 暖性?BLOB?这都是些什么东西?大家别急,马上为您讲解: BLOB—— ...
- 用JAVA代码构造一个日历
package day0603; import java.text.ParseException; import java.text.SimpleDateFormat; import java.uti ...
- HDU 5303 Delicious Apples 美味苹果 (DP)
题意: 给一个长为L的环,起点在12点钟位置,其他位置上有一些苹果,每次带着一个能装k个苹果的篮子从起点出发去摘苹果,要将全部苹果运到起点需要走多少米? 思路: 无论哪处地方,只要苹果数超过k个,那么 ...
- ASP.NET MVC模型部分验证
在很多情况下,我们为了代码的复用可能会存在ViewModel共用的情形.比方说,web应用中常常会遇到的一个需求就是用户找回密码的功能.用户首先要验证通过验证邮箱(通常是用户名)来获取验证码,然后再进 ...
- ECSHOP - 二次开发指南---购物车篇
第一个问题 保存用户购物车数据ECSHOP的购物车数据,是以Session 方式存储在数据库里,并在Session结束后 ,Distroy 掉,解决方法是: 1.购物车内容读取方式. 更改登陆后购物车 ...