![](/img/trans.png)
[英]Why i am getting 406 not accepatble at client side status by the server and even my spring controller is not calling?
[英]Why am I getting these errors in my Server/Client Chatroom program?
我已经在这个程序上工作了几个小时,所以我很脑筋急转弯,无法弄清楚为什么会出现这些错误。 对Java编程相当陌生,对我的情况也无济于事。
On line 27 - "error: method Add in class ClientManager cannot be applied to given types;"
On line 34 - "error: cannot find symbol"
Also line 34 - "error: cannot find symbol"
On line 42 - "error: cannot find symbol"
现在这是我针对这些特定行的代码段:
Line 27 - CM.Add();
Line 34 - MyClient Client = new MyClient(Socket, CM);
Line 42 - Client.SendToAllClients(S);
这是Server类的完整代码。 客户端类工作完美。
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Server
{
public static void main(String[] args) throws Exception
{
new MyServer().start();
}
}
class MyServer extends Thread
{
ServerSocket SS = new ServerSocket(11200);
Socket S;
ClientManager CM = new ClientManager();
public void run()
{
while(true)
{
S = SS.accept();
CM.Add();
}
}
}
class MyClient extends Thread
{
MyClient Client = new MyClient(Socket, CM);
Scanner S;
public void run()
{
while(true)
{
S = new Scanner(System.in);
Client.SendToAllClients(S);
}
}
public void Send(String S)
{
PrintWriter.println(S);
}
}
class ClientManager
{
MyClient[] X = new MyClient[15];
int num = 0;
public synchronized void Add(MyClient C)
{
X[num] = C;
num++;
C.start();
}
public synchronized void SendToAllClient(String S)
{
int i;
for(i = 0;i < num;i++);
{
X[i].Send(S);
}
}
}
更新:我不确定在CM.Add();
需要输入什么参数CM.Add();
我可以告诉您出现这些错误的原因。 您需要了解它,然后根据需要进行更改。
Line 27 - CM.Add();
在您的ClientManager
类中,方法的签名是public synchronized void Add(MyClient C)
这样,您可以看到,它需要一个参数,即类MyClient的对象,但是当您调用此方法时,则不会传递任何参数。
MyClient Client = new MyClient(Socket, CM);
在此行中,您尝试创建类MyClient
对象并传递两个参数Socket和CM对象,但是在类MyClient中,您尚未创建任何将接受两个参数的此类构造函数,默认情况下将只有默认构造函数,可以调用了诸如new MyClient();
类的东西new MyClient();
如果要传递参数,则需要创建自己的参数化构造函数。
Client.SendToAllClients(S);
这里Client
是类MyClient
对象,并且ClientManager
类中存在方法SendToAllClients(s)
,如果您要调用此方法,则需要ClientManager
类的对象,则不能与MyClient
的对象一起调用它。
除此以外,我想告诉您,您没有遵循Java的命名约定。 遵循命名约定是一个好习惯,它可以帮助其他人轻松理解您的代码。 检查此链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.