嘿伙计们我正在尝试编写一个简单的套接字程序,它基本上像客户端的“Hello”消息一样发送,然后服务器获取并打印出来。
我正在尝试遵循本指南:http://www.javaworld.com/jw-12-1996/jw-12-sockets.html?page=4
但是,当我尝试使用端口号实例化serverSocket时,会导致语法错误,建议删除该参数或为该方法创建新的构造函数。当我尝试使用它时,它也无法识别accept()方法。任何人都知道为什么会这样吗?
这是我的客户代码:
public static void main(String[] args) throws UnknownHostException, IOException
{
Socket testSocket = null;
DataOutputStream os = null;
DataInputStream is = null;
try
{
testSocket = new Socket("192.168.0.104", 5932);
os = new DataOutputStream(testSocket.getOutputStream());
is = new DataInputStream(testSocket.getInputStream());
}
catch (UnknownHostException e)
{
System.err.println("Couldn't find Host");
}
catch (IOException e)
{
System.err.println("Couldn't get I/O connection");
}
if (testSocket != null && os != null && is != null)
{
try
{
os.writeBytes("Hello Server!\n");
os.close();
is.close();
testSocket.close();
}
catch (UnknownHostException e)
{
System.err.println("Host not found");
}
catch (IOException e)
{
System.err.println("I/O Error");
}
}
}
这是我的服务器代码(更新):
public static void main(String[] args)
{
String line = new String() ;
try
{
ServerSocket echoServer = new ServerSocket(5932);
Socket clientSocket = echoServer.accept();
DataInputStream is = new DataInputStream(clientSocket.getInputStream());
PrintStream os = new PrintStream(clientSocket.getOutputStream());
while (true) {
line = is.readLine();
os.println(line);
}
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
以下是实际屏幕截图。
错误1:http://i.imgur.com/8JIOd.png 错误2:http://i.imgur.com/7uCow.png
答案 0 :(得分:2)
您的类名为ServerSocket。它没有带int的构造函数。将您的类命名为其他名称,以免与java.net.ServerSocket冲突。
要么使用绝对路径
java.net.ServerSocket clientSocket = new java.net.ServerSocket(5932)
答案 1 :(得分:1)
您尚未发布import语句。类ServerSocket
,Socket
等属于包java.net
。仔细检查您在课程开头是否有导入语句。
import java.net*
这样的东西。或者,更好地使用IDE来帮助您。 Eclipse中的Ctrl-Shift-O将完成工作。
答案 2 :(得分:1)
基于屏幕拍摄的编辑:
您定义的类名为ServerSocket
。这隐藏了您尝试使用的实际类。您的类没有实现采用int
且未定义accept()
的构造函数,这些是您收到的错误。您不应该将您的类命名为与另一个现有类相同的名称,因为它会导致这些类型的错误并进一步混淆。
<强> ORIGINAL 强>:
处理ServerSocket
抛出的异常时,语法错误。
try
{
echoServer = new ServerSocket(5932);
}
catch (IOException e)
{
System.out
}
看起来您在最后一行的末尾缺少.println(e);
。
答案 3 :(得分:1)
以这种方式试试....
- 首先检查您是否已正确导入包java.net.*
public static void main(String[] args)
{
String line = new String() ;
try
{
ServerSocket echoServer = new ServerSocket(5932);
Socket clientSocket = echoServer.accept();
DataInputStream is = new DataInputStream(clientSocket.getInputStream());
PrintStream os = new PrintStream(clientSocket.getOutputStream());
while (true) {
line = is.readLine();
os.println(line);
}
}
catch (IOException e)
{
System.out
}
}