没见过的错误。。。

Jasonliu1993 2014-04-20 10:49:16
package Server;
import java.io.*;
import java.net.*;
import java.util.*;

public class Server {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList<Socket> linkedList= new LinkedList<Socket>();
ServerSocket serverSocket = null;
Socket socket = null;
while(true){
try {
serverSocket = new ServerSocket(4331);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("正在监听");
}
try {
System.out.println("等待客户呼叫");
socket = serverSocket.accept();
linkedList.addLast(socket);
System.out.println("客户的地址:"+socket.getInetAddress());
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("正在等待客户");
}
if(socket != null){
new ServerThread(socket,linkedList).start();
}
}
}

}


报的错误是:
Exception in thread "main" java.lang.ClassFormatError: Incompatible magic value 1885430635 in class file Server/Server
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
求大神解答啊。。。。。
...全文
314 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
a12939026 2014-10-22
  • 打赏
  • 举报
回复
魔数不正确。 你改过CLASS文件了么? .class文件必须以0xCAFEBABE开头,不然就直接报错了。 你的编译工具是特别的么?
Jasonliu1993 2014-10-22
  • 打赏
  • 举报
回复
引用 8 楼 yankaiwuzhengbo 的回复:
[quote=引用 7 楼 yankaiwuzhengbo 的回复:] 首先我没有出现你说的问题,其次你客户端写的socket有问题,无法连接到server上,还有就是你的窗口发送按钮一直是灰色的,无法进行数据发送
我自己修改了一下子没问题啊,也没有改动太多,就是将你send.setEnabled(true);里面置为了true,以前没接触过awt[/quote] 好的~谢谢哦~因为最近在搞Oracle所以没太看到~
yuhouqingchen_2648 2014-05-14
  • 打赏
  • 举报
回复
引用 7 楼 yankaiwuzhengbo 的回复:
首先我没有出现你说的问题,其次你客户端写的socket有问题,无法连接到server上,还有就是你的窗口发送按钮一直是灰色的,无法进行数据发送
我自己修改了一下子没问题啊,也没有改动太多,就是将你send.setEnabled(true);里面置为了true,以前没接触过awt
yuhouqingchen_2648 2014-05-14
  • 打赏
  • 举报
回复
首先我没有出现你说的问题,其次你客户端写的socket有问题,无法连接到server上,还有就是你的窗口发送按钮一直是灰色的,无法进行数据发送
Jasonliu1993 2014-04-21
  • 打赏
  • 举报
回复
引用 1 楼 zpcandzhj 的回复:
貌似ServerSocket和Socket写在一个程序里不太好吧,写两个程序一个Client、一个Server socket = serverSocket.accept();应该在serverSocket = new ServerSocket(4331);之前执行啊,提前监听嘛。
而且不应该先new一个serverSocket,才能执行之后的serverSocket.accept()啊。。。怎么能放在new之前呢。。。
Jasonliu1993 2014-04-21
  • 打赏
  • 举报
回复
引用 1 楼 zpcandzhj 的回复:
貌似ServerSocket和Socket写在一个程序里不太好吧,写两个程序一个Client、一个Server socket = serverSocket.accept();应该在serverSocket = new ServerSocket(4331);之前执行啊,提前监听嘛。
我是写了两个啊。。 服务器端: package Server; import java.io.*; import java.net.*; import java.util.*; public class Server { public static void main(String[] args) { // TODO Auto-generated method stub LinkedList<Socket> linkedList= new LinkedList<Socket>(); ServerSocket serverSocket = null; Socket socket = null; while(true){ try { serverSocket = new ServerSocket(4331); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("正在监听"); } try { System.out.println("等待客户呼叫"); socket = serverSocket.accept(); linkedList.addLast(socket); System.out.println("客户的地址:"+socket.getInetAddress()); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("正在等待客户"); } if(socket != null){ new ServerThread(socket,linkedList).start(); } } } } package Server; import java.net.*; import java.io.*; import java.util.*; import sun.org.mozilla.javascript.internal.ObjToIntMap.Iterator; public class ServerThread extends Thread{ LinkedList<Socket> linkedlist = new LinkedList<Socket>(); Socket socket; DataOutputStream out = null; DataInputStream in = null; String s = null; public ServerThread(Socket t,LinkedList linkedList) { // TODO Auto-generated constructor stub this.linkedlist = linkedList; socket = t; try{ in = new DataInputStream(socket.getInputStream()); } catch(IOException e){} } public void run(){ while(true){ try { s = in.readUTF(); System.out.println(s); System.out.println(linkedlist.size()); WriteUTF(); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("用户离开"); linkedlist.removeFirstOccurrence(socket); break; } } } public void WriteUTF(){ java.util.Iterator<Socket> it = linkedlist.iterator(); while(it.hasNext()){ try { Socket socket1 = it.next(); System.out.println(socket1); out = new DataOutputStream(socket1.getOutputStream()); out.writeUTF(s); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } client端 package Client; import java.net.*; import java.awt.*; import java.io.*; import java.awt.event.*; import javax.swing.*; public class WindowsClient extends JFrame implements Runnable,ActionListener{ private static final long serialVersionUID = 1L; JButton connection,send; JTextField inputText; JTextArea showResult; Socket socket = null; DataInputStream in = null; DataOutputStream out = null; Thread thread; public WindowsClient(){ socket = new Socket(); connection = new JButton("连接服务器"); send = new JButton("发送"); send.setEnabled(false); inputText = new JTextField(15); showResult = new JTextArea(); add(connection,BorderLayout.NORTH); JPanel pSouth = new JPanel(); pSouth.add(new JLabel("输入内容")); pSouth.add(inputText); pSouth.add(send); add(pSouth,BorderLayout.SOUTH); add(new JScrollPane(showResult),BorderLayout.CENTER); connection.addActionListener(this); send.addActionListener(this); thread = new Thread(this); setBounds(10,30,460,400); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void run() { // TODO Auto-generated method stub String s = null; double result = 0; while(true){ try { s = in.readUTF(); showResult.append("\n"+s); } catch (IOException e) { // TODO Auto-generated catch block showResult.setText("已与服务器断开连接"+e); socket = new Socket(); break; } } } public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource() == connection){ try { InetAddress address = InetAddress.getByName("127.0.0.1");; InetSocketAddress socketAddress = new InetSocketAddress(address,4331); socket.connect(socketAddress); in = new DataInputStream(socket.getInputStream()); out = new DataOutputStream(socket.getOutputStream()); send.setEnabled(true); if(!thread.isAlive()){ thread.start(); } } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); socket = new Socket(); } } if(e.getSource() == send){ try { String s = inputText.getText().trim(); out.writeUTF(s); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }
Jasonliu1993 2014-04-21
  • 打赏
  • 举报
回复
额。。。我是写了两个啊。。。这个是服务器端的程序。等一下啊。我把源码全部粘一下。。
亦笑为红颜 2014-04-21
  • 打赏
  • 举报
回复
只能帮顶了,小弟不太看懂你的程序
程猿薇茑 2014-04-21
  • 打赏
  • 举报
回复
只能帮顶了,小弟不太看懂你的程序
程猿薇茑 2014-04-20
  • 打赏
  • 举报
回复
貌似ServerSocket和Socket写在一个程序里不太好吧,写两个程序一个Client、一个Server socket = serverSocket.accept();应该在serverSocket = new ServerSocket(4331);之前执行啊,提前监听嘛。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧