在维护和新功能之间应该在哪里划线?
牛津英语词典将维护定义为:
(7.a)保持工作秩序,维修等的行为; 通过提供设备等手段来保持建筑物,机构,部队等; 如此保持的状态或事实; 保养的意思或规定.
我正在使用客户端 - 服务器应用程序并维护客户端.根据定义,我希望执行:
我不希望表演:
维基百科软件维护页面引用了纠正,自适应,完善和预防性维护,这似乎与我期望的一致,但客户端 - 服务器性质使问题复杂化.
编辑:对于没有依赖关系的独立应用程序,如果软件正常工作,它应该继续工作.使用客户端 - 服务器应用程序,客户端可能会在服务器更改时中断.虽然这不会改变维护的定义,但这意味着有必要对客户端应用程序进行更改时有更多的机会和场合.
如果双方要就维护合同达成一致意见,则必须相互理解什么是合格和维护以及哪些合格作为新功能,因此问题就在于此.
我正在编写一个Java桌面客户端应用程序,用于从远程MySQL服务器检索数据.出于开发目的,我已将其直接连接到MySQL服务器(即使用DriverManager.getConnection(databaseURL)等),但一直打算转向使用Web服务(一旦构建了).我的问题是我是否不能继续直接连接?
什么是Web服务除了要编写更多代码之外还给我什么?我必须实现自己的身份验证; 仅仅依赖MySQL是什么问题?
(我在说这个问题而不是消极的,因为我认为这种模式在这些日子里有点不受欢迎;这就是为什么我要问它,因为在我看来这是一件非常好的事情. )
感谢您提供给我的任何见解!
我有一个基于javascript的客户端,目前正在为新内容轮询.NET Web服务.虽然轮询工作......我对这种方法不满意,因为我正在使用系统资源并在没有任何接收更改时创建开销.
我的问题是如何通知我的客户有新的内容供它显示?我愿意接受任何其他技术来实现这个解决方案.
我有一个关于boost asio库的问题.我成功地尝试在客户端和服务器之间创建套接字,这涉及创建解析器以指定服务器的ip和端口(服务器只需要端口)和其他对象,但是,最重要的是,有必要使用write以及read_some作为从套接字读取和写入的函数.我真的很感激使用一个流,这在boost asio中是可能的,但这很奇怪......在几乎所有使用流的例子中,创建服务器都需要提供端口,好吧,让我们来谈谈客户端..客户端,有必要使用iostream构造函数来指定连接流的坐标,这里是代码:
tcp::iostream() s(argv[1], "daytime");
Run Code Online (Sandbox Code Playgroud)
好吧,我真的不明白第一个参数传递了什么,真的不知道白天可能代表什么...基本上,在这里,我告诉:"嘿流,你必须连接到这个服务器.. ."但是如何指定该服务器的IP和端口?请注意,相反,服务器端的一切都很清晰:
boost::asio::io_service io_s;
tcp::acceptor acc(io_s, tcp::endpoint(tcp::v4(), 1950));
for (;;) {
tcp::iostream stream;
acc.accept(*stream.rdbuf());
stream << "Message" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
使用这个模型,我想使用
stream << mymessage_to_send << std::endl;
stream >> a_string_containing_my_message;
Run Code Online (Sandbox Code Playgroud)
为了发送和接收.我怎样才能做到这一点?非常感谢你.
我正在用Tkinter用Python编写客户端服务器程序.我需要服务器来跟踪连接的客户端.为此,我希望客户端在单击退出按钮(角落中的标准"X")后向服务器发送自动消息.我怎么知道用户何时退出该程序?
我正在使用Socket与ServerSocket通信.字符串正从服务器发送到我的Socket.每条不同的行都是一条消息,在解析时包含信息.要阅读这些文本行,请使用扫描仪.
问题是数据正在"爆发".虽然服务器连续均匀地发送数据,但客户端扫描器读取的数据似乎暂停,一次读取一堆消息(30-40),然后再次暂停.它无限期地重复这个循环.
如果我增加发送数据的速率,则暂停的持续时间减少; 如果我减慢数据速度(每秒1条消息),则错误仍然存在,暂停时间变长.这几乎就像Socket在向扫描器发送任何数据之前等待其缓冲区溢出一样; 然后冲洗所有东西并再次等待溢出.但是,如果我减小Socket缓冲区的大小,则根本没有任何变化.
应该注意的是,我之前在这个方法中使用过Scanner和Socket - 从服务器端 - 并且一切都按照需要工作.另外,我a)尝试使用像Java Tutorials这样的BufferedReader(没有更改bug)和b)将服务器传输列表打印到文件中,并以相同的方式从文件中读取,并且程序按预期工作(消息接收率恒定等)因此问题似乎在Socket本身.
那么:我该如何解决这个问题呢?我没有想法,我真的不知道发生了什么.
代码(根据要求):
// In try block
// Makes the connection
Socket connection = new Socket(TARGET_MACHINE, PORT_NUMBER);
Scanner reader = new Scanner(connection.getInputStream());
Run Code Online (Sandbox Code Playgroud)
// In new Thread
// In run()
while(!finished) // Boolean exit strategy
{
if(reader.hasNextLine())
Sring message = reader.nextLine();
}
Run Code Online (Sandbox Code Playgroud)
这就是我连接和检索字符串的方式.
另外,我收到的字符串通常大约20-40个字符.
首先,让我解释一下背景:
我必须创建一个客户端,它将发送许多HTTP请求来下载图像.这些请求必须是异步的,因为只要图像完成,它就会被添加到队列然后打印到屏幕.因为图像可能很大并且响应被分块,我的处理程序必须将它聚合到缓冲区中.
所以我按照Netty示例代码(HTTP勺子示例).
目前,我有三个静态Map来存储每个通道的通道ID和缓冲区/块布尔/我的最终对象.
private static final ConcurrentHashMap<Integer, ChannelBuffer> BUFFER_MAP = new ConcurrentHashMap<Integer, ChannelBuffer>();
private static final ConcurrentHashMap<Integer, ImagePack> PACK_MAP = new ConcurrentHashMap<Integer, ImagePack>();
private static final ConcurrentHashMap<Integer, Boolean> CHUNKS_MAP = new ConcurrentHashMap<Integer, Boolean>();
Run Code Online (Sandbox Code Playgroud)
之后,我创建了我的bootstrap客户端,并计数到countDown挂起的请求数.当响应图像为complet时,最终队列和计数器将传递给我的Handler.
final ClientBootstrap bootstrap = new ClientBootstrap(
new NioClientSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
bootstrap.setOption("keepAlive", true);
bootstrap.setOption("tcpNoDelay", true);
bootstrap.setOption("reuseAddress", true);
bootstrap.setOption("connectTimeoutMillis", 30000);
final CountDownLatch latch = new CountDownLatch(downloadList.size()) {
@Override
public void countDown() {
super.countDown();
if (getCount() <= 0) {
try {
queue.put(END_OF_QUEUE);
bootstrap.releaseExternalResources();
} catch (InterruptedException …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Java服务器端和as3客户端.我想知道是否有一个银弹来同步他们之间的时钟.在可变延迟和可变时钟速度之间,似乎每个数据包都需要一个时间戳.
谢谢!
所以我使用Haxe NME(HTML5 target ofc)构建了一个简单的websocket客户端实现.
它连接到
ws://echo.websocket.org (sorry no link, SO sees this as an invalid domain)
Run Code Online (Sandbox Code Playgroud)
哪作得很好!(我正在使用xirsys_stdjs haxelib来使用HTML5 websocket的东西.)
我希望有一个本地(在我自己的机器上)运行websocket 服务器.我现在正在使用Socket.io,因为我无法找到更简单/更简单的解决方案.
我目前正在尝试使用socket.io作为套接字服务器,但是使用"标准"javascript套接字实现作为客户端(Haxe HTML5),而不使用socket.io库clientside.
有谁知道这是否应该可行?因为我无法让它发挥作用.这是我的socket.io代码:
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
app.listen(1337);
function handler (req, res) {
fs.readFile(__dirname + '/client.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
// WEBSOCKET IMPLEMENTATION
io.sockets.on('connection', function (socket) {
console.log("webSocket connected...");
socket.on('message', function () …Run Code Online (Sandbox Code Playgroud) 我正在尝试用Netty编写一个简单的echo服务器.我正在阅读Netty in Action MEAP v8来了解一些理论并学习Netty的核心基础知识.客户端连接成功,但客户端没有消息通过.我能够将一条消息telnet到服务器并收到响应,所以我猜问题是在客户端上,我不知道出了什么问题,因为我是Netty的新手.
这是客户:
public class Client {
private final String host;
private final int port;
public Client(String host, int port) {
this.host = host;
this.port = port;
}
public void start() throws Exception {
EventLoopGroup group = new NioEventLoopGroup();
try {
Bootstrap b = new Bootstrap();
b.group(group).channel(NioSocketChannel.class)
.remoteAddress(new InetSocketAddress(host, port))
.handler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(new EchoClientHandler());
}
});
ChannelFuture f = b.connect().sync();
f.channel().closeFuture().sync();
} finally {
group.shutdownGracefully().sync();
} …Run Code Online (Sandbox Code Playgroud)