java与分布式.docx
《java与分布式.docx》由会员分享,可在线阅读,更多相关《java与分布式.docx(27页珍藏版)》请在冰豆网上搜索。
java与分布式
1、所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。
应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
操作javasocket时用到的最多的三个方法为:
accept():
主要用于服务器端产生“阻塞”,等待客户端的链接请求,并且返回一个客户端的Socket实例;
getInputStream():
方法主要用来获得网络连接输入,同时返回一个InputStream对象实例;
getOutputStream():
方法和上面的getInputStream相反。
2、一般要建立Java的Socket连接,应首先明确服务器端和客户端,服务器端使用ServerSocket监听指定的端口,使用accept等待客户端请求,链接链接,开始会话、完成会话后,关闭链接。
(注意,一般socket的关闭都应该是服务器端来进行的,后面说);客户端使用Socket对网络中的某个服务器的某个端口发出链接请求,连接成功,开始会话,会话完成,Socket关闭。
2、示例代码:
服务器端:
复制代码代码如下:
packagecom.icer.server;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.PrintWriter;
import.ServerSocket;
import.Socket;
/**
*Server
*
*@authorIcer
*
*/
publicclassServer{
privateServerSocketss;
privateSockets;
privateBufferedReaderbr;
privatePrintWriterpw;
publicServer(){
try{
ss=newServerSocket(10000);
System.out.println("Serverisstarting...");
s=ss.accept();
br=newBufferedReader(newInputStreamReader(s.getInputStream()));
pw=newPrintWriter(s.getOutputStream(),true);
Stringline=br.readLine();
System.out.println(line);
pw.println("yourwordis:
"+line);
//pw.println("helloworld");
br.close();
pw.close();
}catch(IOExceptionie){
ie.printStackTrace();
}
}
publicstaticvoidmain(String[]args)throwsException{
newServer();
}
}
客户端:
复制代码代码如下:
packagecom.icer.client;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
import.Socket;
/**
*Client
*@authorIcer
*
*/
publicclassClient{
privateSockets;
privateBufferedReaderbr;
//privateBufferedReaderline;
privatePrintWriterpw;
privateStringline="";
publicClient(){
try{
s=newSocket("127.0.0.1",10000);
pw=newPrintWriter(s.getOutputStream(),true);
br=newBufferedReader(newInputStreamReader(s.getInputStream()));
pw.println("hello");
line=br.readLine();
System.out.println(line);
br.close();
pw.close();
}catch(IOExceptionie){
ie.printStackTrace();
}
}
publicstaticvoidmain(String[]args)throwsException{
newClient();
}
}
这篇文章主要介绍了java实现socket从服务器连续获取消息的示例,需要的朋友可以参考下
服务器端我们用软件模拟,是一个很小巧的软件,下载软件NetAssist:
第二步贴上我们客户端的代码:
复制代码代码如下:
importjava.io.DataInputStream;
importjava.io.IOException;
import.Socket;
publicclassClient{
publicstaticfinalStringIP_ADDR="192.168.3.65";//服务器地址
publicstaticfinalintPORT=8080;//服务器端口号
staticStringtext=null;
publicstaticvoidmain(String[]args)throwsIOException{
System.out.println("客户端启动...");
Socketsocket=null;
socket=newSocket(IP_ADDR,PORT);
while(true){
try{
//创建一个流套接字并将其连接到指定主机上的指定端口号
//读取服务器端数据
DataInputStreaminput=newDataInputStream(socket.getInputStream());
byte[]buffer;
buffer=newbyte[input.available()];
if(buffer.length!
=0){
System.out.println("length="+buffer.length);
//读取缓冲区
input.read(buffer);
//转换字符串
Stringthree=newString(buffer);
System.out.println("内容="+three);
}
}catch(Exceptione){
System.out.println("客户端异常:
"+e.getMessage());
}
}
}
}
可以看到打印结果如下:
length表示消息的长度
复制代码代码如下:
客户端启动...
length=27
内容=
好了,一个socket客户端我们就完成了,这个是可以一直接收服务器发过来的消息的。
javasocket编程实例代码讲解
作者:
字体:
[增加 减小]类型:
转载
这篇文章主要介绍了javasocket编程示例讲解,大家参考使用吧
1、所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。
应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
操作javasocket时用到的最多的三个方法为:
accept():
主要用于服务器端产生“阻塞”,等待客户端的链接请求,并且返回一个客户端的Socket实例;
getInputStream():
方法主要用来获得网络连接输入,同时返回一个InputStream对象实例;
getOutputStream():
方法和上面的getInputStream相反。
2、一般要建立Java的Socket连接,应首先明确服务器端和客户端,服务器端使用ServerSocket监听指定的端口,使用accept等待客户端请求,链接链接,开始会话、完成会话后,关闭链接。
(注意,一般socket的关闭都应该是服务器端来进行的,后面说);客户端使用Socket对网络中的某个服务器的某个端口发出链接请求,连接成功,开始会话,会话完成,Socket关闭。
2、示例代码:
服务器端:
复制代码代码如下:
packagecom.icer.server;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.PrintWriter;
import.ServerSocket;
import.Socket;
/**
*Server
*
*@authorIcer
*
*/
publicclassServer{
privateServerSocketss;
privateSockets;
privateBufferedReaderbr;
privatePrintWriterpw;
publicServer(){
try{
ss=newServerSocket(10000);
System.out.println("Serverisstarting...");
s=ss.accept();
br=newBufferedReader(newInputStreamReader(s.getInputStream()));
pw=newPrintWriter(s.getOutputStream(),true);
Stringline=br.readLine();
System.out.println(line);
pw.println("yourwordis:
"+line);
//pw.println("helloworld");
br.close();
pw.close();
}catch(IOExceptionie){
ie.printStackTrace();
}
}
publicstaticvoidmain(String[]args)throwsException{
newServer();
}
}
客户端:
复制代码代码如下:
packagecom.icer.client;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
import.Socket;
/**
*Client
*@authorIcer
*
*/
publicclassClient{
privateSockets;
privateBufferedReaderbr;
//privateBufferedReaderline;
privatePrintWriterpw;
privateStringline="";
publicClient(){
try{
s=newSocket("127.0.0.1",10000);
pw=newPrintWriter(s.getOutputStream(),true);
br=newBufferedReader(newInputStreamReader(s.getInputStream()));
pw.println("hello");
line=br.readLine();
System.out.println(line);
br.close();
pw.close();
}catch(IOExceptionie){
ie.printStackTrace();
}
}
publicstaticvoidmain(String[]args)throwsException{
newClient();
}
}
Java基于Tcp协议的socket编程实例
投稿:
shichen2014字体:
[增加 减小]类型:
转载
这篇文章主要介绍了Java基于Tcp协议的socket编程实例,较为详细的分析了socket编程客户端与服务器端的具体实现步骤与使用技巧,具有一定的参考借鉴价值,需要的朋友可以参考下
本文实例讲述了Java基于Tcp协议的socket编程方法,分享给大家供大家参考。
具体分析如下:
以下是一对一的通信编程实现,后续会继续学习一个服务器监听多个客户端的实现。
这里用到的主要步骤如下:
第一步:
以特定端口(如4800)新建socket对象
第二步:
以系统输入设备构造BufferedReader对象,该对象用于接收系统键盘输入的字符
第三步:
以socket对象得到输出流来构造PrintWriter
第四步:
以socket对象得到输入流来构造相应的BufferedReader对象,该对象用于接收server端发送过来的信息
我理解到的关闭socket:
先开的后关闭,socket最后关闭。
以下是客户端的代码实现:
复制代码代码如下:
packagecom.fan.socket;
importjava.io.*;
import.Socket;
publicclassSocketClient{
publicstaticvoidmain(String[]args)throwsIOException{
try{
Socketsocket=newSocket("127.0.0.1",4800);
System.out.println("clientstart...");
//向本机的4800端口发出客户请求
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
PrintWriterwrite=newPrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
Stringreadline;
readline=br.readLine();//从系统标准输入读入一字符串
while(!
readline.equals("end")){
//若从标准输入读入的字符串为"end"则停止循环
write.println(readline);
//将从系统标准输入读入的字符串输出到Server2
write.flush();
//刷新输出流,使Server马上收到该字符串
System.out.println("Client:
"+readline);
//在系统标准输出上打印读入的字符串
System.out.println("Server:
"+in.readLine());
//从Server读入一字符串,并打印到标准输出上
readline=br.readLine();//从系统标准输入读入一字符串
}//继续循环
write.close();//关闭Socket输出流
in.close();//关闭Socket输入流
socket.close();//关闭Socket
}catch(Exceptione){
System.out.println("cannotlistento:
"+e);//出错,打印出错信息
}
}
}
服务端代码实现:
复制代码代码如下:
packagecom.fan.socket;
importjava.io.*;
import.ServerSocket;
import.Socket;
publicclassSocketService{
publicstaticvoidmain(String[]args)throwsIOException{
SocketServicesocketService=newSocketService();
socketService.oneServer();
}
publicvoidoneServer(){
try{
ServerSocketserver=null;
try{
server=newServerSocket(4800);
System.out.println("serverstartisok...");
//创建一个ServerSocket在端口4800监听客户请求
}catch(Exceptione){
System.out.println("cannotlistento:
"+e);
//出错,打印出错信息
}
Socketsocket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客户请求,有客户
//请求到来则产生一个Socket对象,并继续执行
}catch(Exceptione){
System.out.println("Error."+e);
//出错,打印出错信息
}
Stringline;
BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriterwriter=newPrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
System.out.println("Client:
"+in.readLine());
//在标准输出上打印从客户端读入的字符串
line=br.readLine();
//从标准输入读入一字符串
while(!
line.equals("end")){
//如果该字符串为"bye",则停止循环
writer.println(line);
//向客户端输出该字符串
writer.flush();
//刷新输出流,使Client马上收到该字符串
System.out.println("Server:
"+line);
//在系统标准输出上打印读入的字符串
System.out.println("Client:
"+in.readLine());
//从Client读入一字符串,并打印到标准输出上
l