我是Java的新手.我试图找出如何使用此代码.在我看来,如果在开始时我得到代码的一般结构(哪些方法存在以及它们如何相互关联)将是非常有用的.例如,我看到"main"使用"createAndShowGUI",而"createAndShowGUI"又使用"addComponentsToPane"等等.所以,代码有一种树形结构,如果我可以想象这个结构,那就太好了.有没有可以做到的软件.或者,更具体地说,NetBeans可以做到吗?
我有以下问题.我的客户端程序监视本地网络中服务器的可用性(使用Bonjour,但它不会反弹).一旦客户端应用程序"注意到"服务器,客户端就会尝试创建一个套接字:Socket(serverIP,serverPort);
.
在某些时候,客户端可以松开服务器(Bonjour说服务器不再在网络中可见).因此,客户端决定close
使用套接字,因为它不再有效.
在某个时刻服务器再次出现.因此,客户端尝试创建与此服务器关联的新套接字.但!服务器可以拒绝创建此套接字,因为它(服务器)已经有一个与客户端IP和客户端端口关联的套接字.这是因为套接字由客户端关闭,而不是由服务器关闭.会发生吗?如果是这样的话,这个问题怎么解决?
好吧,我知道客户端不太可能尝试从同一个端口(客户端端口)连接到服务器,因为客户端随机选择其端口.但它仍然可能发生(只是偶然).对?
好吧,也许这是一个愚蠢的问题,但我无法解决这个问题.
在我的ServiceBrowser
班上我有这一行:
ServiceResolver serviceResolver = new ServiceResolver(ifIndex, serviceName, regType, domain);
Run Code Online (Sandbox Code Playgroud)
编译器抱怨它.它说:
cannot find symbol
symbol : constructor ServiceResolver(int,java.lang.String,java.lang.String,java.lang.String)
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我在ServiceResolver中有一个构造函数:
public void ServiceResolver(int ifIndex, String serviceName, String regType, String domain) {
this.ifIndex = ifIndex;
this.serviceName = serviceName;
this.regType = regType;
this.domain = domain;
}
Run Code Online (Sandbox Code Playgroud)
ADDED:
我void
从构造函数中删除了它的工作原理!为什么?
我学习了套接字使用的一个例子.在此示例中,客户端向服务器发送请求以打开套接字然后服务器(侦听特定端口)打开套接字并且一切正常,套接字从双方(客户端和服务器)"打开".
但我仍然不清楚这些东西有多灵活.例如,客户端是否可以关闭打开的(从两端)套接字并再次重新打开它(在服务器保持套接字打开的情况下).
服务器是否可以"知道"客户端上的套接字已关闭?客户端是否可以知道服务器端的套接字已关闭?
添加:
对我来说更重要的一件事.如果应用程序(无主服务器或客户端)崩溃,异常终止,被杀,会发生什么?它会关闭应用程序侧面打开的所有套接字吗?
增加2:
如果套接字一侧的应用程序被关闭(终止,关闭,终止)然后再次打开(在相同的IP地址和相同的端口上),该怎么办?我们应该在两个应用程序之间创建一个新套接字,还是可以使用旧套接字(在崩溃之前创建).
我有以下代码:
public void post(String message) {
final String mess = message;
(new Thread() {
public void run() {
while (true) {
try {
if (status.equals("serviceResolved")) {
output.println(mess);
Game.log.fine("The following message was successfully sent: " + mess);
break;
} else {
try {Thread.sleep(1000);} catch (InterruptedException ie) {}
}
} catch (NullPointerException e) {
try {Thread.sleep(1000);} catch (InterruptedException ie) {}
}
}
}
}).start();
}
Run Code Online (Sandbox Code Playgroud)
在我的日志文件中,我发现了很多像这样的行:
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla
The following …
Run Code Online (Sandbox Code Playgroud) 我想有一个带有JavaScript的html文件,其中(文件)能够修改其上下文.更多细节,我想象它.我有一个html文件,我用浏览器打开.我有一个文本区域,我在那里键入我的文本,然后按提交按钮.因此,表单的上下文保存在html文件中的某处.最简单,最稳定的方法是什么?
假设我有一个包含三列的大表:"user_name","user_property","value_of_property".Lat也假设我有很多用户(比如10万)和很多属性(比方说10 000).然后桌子将是巨大的(10亿行).
当我从表中提取信息时,我总是需要有关特定用户的信息.所以,我用,例如where user_name='Albert Gates'
.因此,每次mysql服务器需要分析10亿行时,找到包含"Albert Gates"作为user_name的那些行.
将大表拆分成与固定用户相对应的许多小表是不明智的?
我想尝试使用库运行示例.在库的文档中写道,我需要将所有文件复制到我的目录中而不是键入make
.之后,我需要转到"Debug"文件夹并键入./lib_examples
以运行示例.
我执行了这个序列.因此,我有很多*.o
和*.d
文件中的"调试"子目录.其中有lib_examples.o
和lib_examples.h
文件.但是没有lib_example
我应该执行的文件.
有谁知道应该发生什么以及它出错了.我应该再做一步才能使用*.o
和*.d
文件吗?
解释如何std::bind
使用的一个简单示例如下:
假设我们有3个参数的函数:f3(x,y,z).我们想要一个2个参数的函数,定义为:f2(x,y) = f3(x,5,y)
.在C++中,我们可以轻松地执行以下操作std::bind
:
auto f2 = std::bind(f3, _1, 5, _2);
Run Code Online (Sandbox Code Playgroud)
这个例子对我很清楚:std::bind
将一个函数作为它的第一个参数,然后它接受另外两个参数,其中n是作为第一个参数的函数的参数个数std::bind
.
但是,我发现另一个使用bind:
void foo( int &x )
{
++x;
}
int main()
{
int i = 0;
// Binds a copy of i
std::bind( foo, i ) (); // <------ This is the line that I do not understand.
std::cout << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
很明显,foo
有一个论点,std::bind
并设置为i
.但是为什么我们之后又使用另一对括号(foo, i)
?为什么我们不使用输出std::bind
?我的意思是,我们为什么不拥有auto f …
在代码中,我看到以下构造:
const class_name obj_name{func()};
Run Code Online (Sandbox Code Playgroud)
func()返回一个名为的类的对象class_name
.所以,我想知道为什么不使用以下结构:
const class_name obj_name = func();
Run Code Online (Sandbox Code Playgroud) java ×5
c++ ×3
compilation ×2
networking ×2
sockets ×2
assign ×1
bind ×1
break ×1
constructor ×1
html ×1
javascript ×1
loops ×1
makefile ×1
mysql ×1
netbeans ×1
optimization ×1
split ×1
std ×1
treeview ×1