java编写客户端(怎么用java编写简单客户端程序)

:暂无数据 2026-08-03 02:30:01 0

java编写客户端(怎么用java编写简单客户端程序)

大家好,如果您还对java编写客户端不太了解,没有关系,今天就由本站为大家分享java编写客户端的知识,包括怎么用java编写简单客户端程序的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

怎么用java编写简单客户端程序

我这里有一个例子希望能够帮助你

public class Client{
private Socket socket;
try{
Socket socket=new Socket ("localhoast’,8088);
ip=InetAddress.getLocalHost();
String localip=ip.getHostAddress();
System.out.println(localip);
String name=ip.getHostName();
System.out.println(name);
}
catch(Exception e){

}
public void start(){
try{
Run r2=new Run();
Thread t1=new Thread(r2);
t1.setDaemon(true);
t1.start();

Scanner sc=new Scanner(System.in);
OutputStream os=socket.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
PrintWriter writer=new PrintWriter(osw,true);

while(true){
writer.println(sc.nextLine());
}
}catch(Exception e){
}
}
public static void main(String args){
Client client=new Client();
client.start();
}
class Run implements Runnable{
public void run() {
while(true){
try {
InputStream is=socket.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
while(true){
String str=br.readLine();
System.out.println("服务器说:"+str);
if("bye".equals(str)){
System.out.println("再见客户端");
System.out.println("聊天结束");

}
}
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}
}
}

通过java中的socket技术编写能够回显客户端输入的多线程服务器端

import java.io.*;
import java.net.*;
public class EchoServer {
public static void main(String args) {
new EchoServer().startServer();
}
boolean bstop=false;
public void startServer() {
try {
//创建服务器,并开放88端口
ServerSocket server=new ServerSocket(88);
System.out.println("服务于88端口\n客户端发exit/quit结束当前连接;发stop停止服务器");
while(!bstop){
//监听服务器端口,一旦有数据发送过来,那么就将数据封装成socket对象
//如果没有数据发送过来,那么这时处于线程阻塞状态,不会向下继续执行
Socket socket=server.accept();
System.out.println("客户端信息:"+socket.getRemoteSocketAddress());
new EchoThread(socket).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}

class EchoThread extends Thread{
private Socket socket;
public EchoThread(Socket socket){
this.socket=socket;
}
public void run(){
BufferedReader br=null;
PrintWriter pw=null;
try {
//从socket中得到读取流,该流中有客户端发送过来的数据
//InputStreamReader将字节流转化为字符流
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

pw=new PrintWriter(socket.getOutputStream());
pw.println("客户端发exit/quit结束当前连接;发stop停止服务器\n");
pw.flush();

String info;
while((info=br.readLine())!=null){//行读取客户端数据
System.out.println(info);

pw.println(info);
pw.flush();
if("quit".equals(info) || "exit".equals(info)){
break;

}else if("stop".equals(info)){
bstop=true;
System.exit(0);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {pw.close();} catch (Exception e) {}
try {br.close();} catch (IOException e) {}
try {socket.close();} catch (IOException e) {}
}
}
}
}

怎么用Java开发FTP客户端

摘要
本文解释了如何利用库用Java语言编写FTP客户端代码。它比较了FTP库的一个完全列表,演示了每个库的优点和缺点,并且帮助决策者为他们的需要选择适当的库。另外,本文阐述了Fa?ade模式如何在取代一个库时改变管理。最后,作者Jean-Pierre Norguet讨论并解决了由于缺乏权威性的说明书引起的一些问题。
让我们假设一个情景:我们要编写一个纯Java应用程序,该程序必须从运行FTP服务器的远程计算机上下载文件。我们也通过远程文件信息,像名字、日期、或者尺寸,来过滤下载。
自己来写一个FTP协议处理,尽管是有可能,并且可能很有趣。但是这样做也有可能有困难、花费长时间、并且有潜在的风险。既然我们不肯花费时间、精力、或者金钱自己来写一个处理器,那我们推荐使用一个可重用的现有的软件组件。万维网上有并且大量的库可供使用。有了一个FTP客户端库,下载一个文件用Java语言编写就像下面一样简单:
FTPClient ftpClient = new FTPClient();
ftpClient.connect("ftp.foo.com", "user01", "pass1234");
ftpClient.download("C:\\Temp\\", "README.txt");
// Eventually other operations here ...
ftpClient.disconnect();
寻找一个适合我们需要的高质量的Java FTP客户端库并不像他看起来那么简单;它可能相当困难。要找到一个Java FTP客户端库需要花一些时间。接着,在我们找到所有的已存在的库之后,我们选哪个?每个库适合不同的需要。库在质量上是不等的,并且它们的设计有本质的区别。每个提供一套不同的属性和使用不同类型的行话来描述他们。
因此,计算和比较FTP客户端库证明是困难而且令人迷惑的。重复使用已存在的组件是一个值得推荐的过程,但在这个例子中,启动它也是令人沮丧的。并且这有点羞愧:在选好的一个好的FTP库之后,剩下的工作就是例程了。
本文旨在使选择过程简短、容易、并且有价值。我首先列出了所有的FTP客户端库。接着,我定义和描述了库应该用某种方式找到的相关标准的一个表格。最后,我列出了一个总浏览的矩阵,该矩阵给出了库间相互比较的过程的快速浏览。所有的信息提供了我们作出一个迅速、可靠、和长期的决定所需的每件事。
使用JDK(Java 开发工具集)的FTP支持
用于FTP的访问规范是用于注释的请求:959(RFC959)。Sun Microsystems提供了JDK的一个RFC959执行。但是它是内部的、非文档化的、并且不提供任何资源。当RFC959在尚未公开时,它实际上是执行RFC1738、URL规范的一个公共界面的后终端。如图1。
图1. 使用JDK的FTP支持。
RFC1738的一个执行过程在JDK中作为标准给出。它为基本的FTP传送做一个可推理的工作。它是公共的、文档化的、并且提供源代码。要使用它,我们可编写下面语句:
URL url = new URL("ftp://user01:pass1234@ftp.foo.com/README.txt;type=i");
URLConnection urlc = url.openConnection();
InputStream is = urlc.getInputStream(); // To download
OutputStream os = urlc.getOutputStream(); // To upload
使用JDK的FTP客户端严格的遵守标准推荐,但它有以下几个说明:
它从根本上区别于第三方的FTP客户端库;这些执行RFC959而不是RFC1738
RFC959用大多数的桌面FTP客户端工具执行。许多Java程序员使用这些工具连接到FTP服务器上。作为一个尝试,这些工具及有可能优先于类似的RFC959库。
URL 和URLConnection类只开放用于通讯的流。Sun库不为构造原始的FTP服务器响应成为像String、 File、 RemoteFile、 或者 Calendar之类的更合用的Java对象而提供直接支持。所以我们不得不编写更多的代码,只是为了把数据写入一个文件中或者开始一个目录列表。
正像RFC1738的3.2部分解释的一样,"最优化",FTP URL在每个操作后要求关闭(控制)连接。这对于传送许多小文件是一种浪费、并且毫无效率。而且,作了特别限制FTP服务器可能把会这样一个通讯开销认为一个是恶毒的网络攻击或者滥用而拒绝提供进一步的服务。
最后,它缺乏几个有用的属性。
由于以上所有或者某种原因,可优先使用一个第三方的库。下面部分列出了可供选择的第三方的库。
***隐藏网址***

用java socket 写一个简单的 聊天 客户端与服务器端之间 都能实现 一个不

客户端代码:
package net;
import java.net.*;
import java.io.*;
public class socketclient {
public static void main(String args) {
Socket s = null;
InputStream is = null;
DataInputStream d = null;
OutputStream os = null;
DataOutputStream ds = null;
try {
s = new Socket("127.0.0.1", 1555);
is = s.getInputStream();
d = new DataInputStream(is);
os = s.getOutputStream();
ds = new DataOutputStream(os);
System.out.println(d.readUTF() + " from " + s.getPort());
String content = null;
while (true) {
content = new BufferedReader(new InputStreamReader(System.in))
.readLine();
ds.writeUTF("port# " + s.getLocalPort() + " says " + content
+ " to " + s.getPort());
ds.flush();
if (content.equalsIgnoreCase("Bye"))
break;
}
} catch (ConnectException e) {
System.out.println(e.getMessage());
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ds.close();
os.close();
d.close();
is.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务器端代码:
package net;
import java.net.*;
import java.io.*;
public class socketserver {
public static void main(String args) {
Socket s = null;
OutputStream out = null;
DataOutputStream ds = null;
InputStream is = null;
DataInputStream d = null;
try {
ServerSocket ss = new ServerSocket(1555);
s = ss.accept();
out = s.getOutputStream();
ds = new DataOutputStream(out);
is = s.getInputStream();
d = new DataInputStream(is);
} catch (IOException e) {
e.printStackTrace();
}
try {
String content = null;
ds.writeUTF("Hello " + s.getInetAddress() + " port#"
+ s.getPort());
ds.flush();
while (true) {
content = d.readUTF();
System.out.println(content);
if (content.equalsIgnoreCase("Bye"))
break;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ds.close();
out.close();
d.close();
is.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

关于java网络通信中客户端设计方式

是的,最好是这样做,
你需要有两个队列,发送队列来接收队列。(vector,arraylist,hashtable或者Object都可以)
在程序设计中要时刻记得MVC模式, 设计出来的程序模块必须专业化, 绘图的就让它绘图,专业绘图,别让他处理逻辑, 联网的就专业联网,别让我去绘图。
所以,网络线程不要用来干别的事情,一旦程序中有消息要发送就立即放到发送消息队列中,在队列中排队,而网络线程干的事情就是按先来后到的原则把队列中的消息一个个发向服务端。
反过来,每次收到服务端发过来的消息, 网络线程不要去干涉它,也不要去处理它,而是把它放在接收队列中就不用管它了,自己又去干自己的专业活——联网收发。 而我们的程序逻辑就会去每隔一段时间去看看接收队列中是否己经有了消息来了,有了也按先来后到原则一个个处理,处理的结果如果需要更新界面的话,就通知专业绘图组件来绘图。
这样的一个系统,每个人都有自己的权力和职责,各司其位,互不干扰。 这才是MVC的好系统。 一旦产生错误和发现问题,我们就可以快速地定位问题出在哪里。 比如图画错了,我们就直接找绘图部门就行了,而不要去找联网部门了。那不是他们的责任。

OK,关于java编写客户端和怎么用java编写简单客户端程序的内容到此结束了,希望对大家有所帮助。

java编写客户端(怎么用java编写简单客户端程序)

本文编辑:admin

本文相关文章:


学java需要注意什么(学习java软件开发课程要注意什么)

学java需要注意什么(学习java软件开发课程要注意什么)

大家好,关于学java需要注意什么很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于学习java软件开发课程要注意什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮

2026年9月6日 18:50

system如何记忆(java中的System.in如何理解,请高手指教一下,System的意思,in的意思,in是对象吗,System是类吗)

system如何记忆(java中的System.in如何理解,请高手指教一下,System的意思,in的意思,in是对象吗,System是类吗)

大家好,如果您还对system如何记忆不太了解,没有关系,今天就由本站为大家分享system如何记忆的知识,包括java中的System.in如何理解,请高手指教一下,System的意思,in的意思,in是对象吗,System是类吗的问题都

2026年9月6日 10:50

输入java成功javac不成功(为什么输入java有用输入javac就没用了)

输入java成功javac不成功(为什么输入java有用输入javac就没用了)

本篇文章给大家谈谈输入java成功javac不成功,以及为什么输入java有用输入javac就没用了对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年8月22日 08:30

javareplaceall用法(java replaceAll该怎么用)

javareplaceall用法(java replaceAll该怎么用)

本篇文章给大家谈谈javareplaceall用法,以及java replaceAll该怎么用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年7月9日 01:20

javaweb在线投票系统(java web做个投票页面,不用注册,怎么限制用户投票次数(手机进入该页面))

javaweb在线投票系统(java web做个投票页面,不用注册,怎么限制用户投票次数(手机进入该页面))

今天给各位分享java web做个投票页面,不用注册,怎么限制用户投票次数(手机进入该页面)的知识,其中也会对java web做个投票页面,不用注册,怎么限制用户投票次数(手机进入该页面)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注

2026年6月29日 01:40

js基本数据类型和引用数据类型(javascript中基本类型和引用类型的区别分析)

js基本数据类型和引用数据类型(javascript中基本类型和引用类型的区别分析)

大家好,关于js基本数据类型和引用数据类型很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于javascript中基本类型和引用类型的区别分析的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下

2026年6月8日 05:50

java集合图谱(java问题 如图,同样是Map集合的遍历为什么左图进行操作时报错了,右图没有报错,求大神)

java集合图谱(java问题 如图,同样是Map集合的遍历为什么左图进行操作时报错了,右图没有报错,求大神)

本篇文章给大家谈谈java集合图谱,以及java问题 如图,同样是Map集合的遍历为什么左图进行操作时报错了,右图没有报错,求大神对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年6月1日 12:10

unity3d编程语言(我是新手,问一下在Unity 3D中用C#更好还是javascript更好)

unity3d编程语言(我是新手,问一下在Unity 3D中用C#更好还是javascript更好)

今天给各位分享我是新手,问一下在Unity 3D中用C#更好还是javascript更好的知识,其中也会对我是新手,问一下在Unity 3D中用C#更好还是javascript更好进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现

2026年5月12日 20:00

checked异常(在java中,异常处理的机制有哪几种,分别是什么)

checked异常(在java中,异常处理的机制有哪几种,分别是什么)

这篇文章给大家聊聊关于checked异常,以及在java中,异常处理的机制有哪几种,分别是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年4月28日 15:15

更多文章:


服装店网站网页设计(服装网站建设目标设计要看甲方)

服装店网站网页设计(服装网站建设目标设计要看甲方)

“服装店网站网页设计”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看服装店网站网页设计(服装网站建设目标设计要看甲方)!

2026年9月7日 14:10

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

大家好,电脑里2个系统怎么删除一个相信很多的网友都不是很明白,包括电脑开机显示有两个系统,如何删除一个也是一样,不过没有关系,接下来就来为大家分享关于电脑里2个系统怎么删除一个和电脑开机显示有两个系统,如何删除一个的一些知识点,大家可以关注

2026年9月7日 12:20

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

大家好,今天小编来为大家解答以下的问题,关于苹果手机代码大全,恢复更新固件iOS未知错误代码解决大全这个很多人还不知道,现在让我们一起来看看吧!

2026年9月7日 10:20

scrollthrough意思(“scroll”是什么意思)

scrollthrough意思(“scroll”是什么意思)

今天给各位分享“scroll”是什么意思的知识,其中也会对“scroll”是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 08:00

怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)

怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)

本篇文章给大家谈谈怎么激活keygen,以及注册机如何激活cad2008一个简单激活cad2008的方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站

2026年9月7日 06:30

vba编写excel插件(excel vba中能否动态创建控件)

vba编写excel插件(excel vba中能否动态创建控件)

其实vba编写excel插件的问题并不复杂,但是又很多的朋友都不太了解excel vba中能否动态创建控件,因此呢,今天小编就来为大家分享vba编写excel插件的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年9月7日 04:40

c语音符号大全(C语言的所有格式符)

c语音符号大全(C语言的所有格式符)

各位老铁们,大家好,今天由我来为大家分享c语音符号大全,以及C语言的所有格式符的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年9月7日 04:30

为什么控件属性点不了(c#引用的第三方控件,属性全部显示为灰色,属性值不可更改)

为什么控件属性点不了(c#引用的第三方控件,属性全部显示为灰色,属性值不可更改)

今天给各位分享c#引用的第三方控件,属性全部显示为灰色,属性值不可更改的知识,其中也会对c#引用的第三方控件,属性全部显示为灰色,属性值不可更改进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 03:50

旅游网站设计思路和主要设计内容(旅游网站建设方案该如何进行设计)

旅游网站设计思路和主要设计内容(旅游网站建设方案该如何进行设计)

本篇文章给大家谈谈旅游网站设计思路和主要设计内容,以及旅游网站建设方案该如何进行设计对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 01:50

野生菌十大名菌野生菌十大名菌分别是哪些?菌内有几种野生菌 野生的鸡枞菌是什么样子

野生菌十大名菌野生菌十大名菌分别是哪些?菌内有几种野生菌 野生的鸡枞菌是什么样子

大家好,各种野生菌相信很多的网友都不是很明白,包括野生菌十大名菌野生菌十大名菌分别是哪些也是一样,不过没有关系,接下来就来为大家分享关于各种野生菌和野生菌十大名菌野生菌十大名菌分别是哪些的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

2026年9月6日 23:50

最近更新

qqid查询(怎么查qq历史网名)
2026-09-07 13:20:02 浏览:0
server2008官网下载(sql server 2008 r2 express 官方)
2026-09-07 13:00:02 浏览:0
热门文章

dessert(dessert是什么意思)
2026-05-03 12:45:03 浏览:7
标签列表