想实现的功能为在client端设置一个定时器,每隔一段时间通过Socket向Server端发送“Hello world”字符串,Server端接受到之后把它打印出来,程序代码如下Server端
import java.net.*;
import java.io.*;public class MultiUser extends Thread
{
private Socket client; public MultiUser(Socket c)
{
this.client = c;
} public void run()
{
try
{
InputStream inStream = client.getInputStream(); ObjectInputStream objInStream = new ObjectInputStream(inStream); try
{
//Test test = (Test) objInStream.readObject();
String str = (String)objInStream.readObject();
System.out.println(str); } catch (Exception e)
{
e.printStackTrace();
} } catch (IOException ex)
{
ex.printStackTrace();
} finally
{
}
} public static void main(String[] args) throws IOException
{
ServerSocket server = new ServerSocket(5678); System.out.println("Server start!"); int i = 1; while (true)
{
System.out.println("Thread " + i + " start");
i++;
MultiUser mu = new MultiUser(server.accept());
mu.start();
}
}
}客户端为import java.net.*;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.Timer;
import javax.swing.*;public class Client
{
static Socket server; public static void main(String[] args) throws IOException
{
server = new Socket(InetAddress.getLocalHost(), 5678);

ActionListener listener = new TimePrinter();

Timer t = new Timer(3000, listener);
t.start();

server.close();
}
}class TimePrinter implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
try
{
ObjectOutputStream outStream = new ObjectOutputStream(Client.server
.getOutputStream());
//Test test = new Test();
String str = "Hello world";
outStream.writeObject(str);
outStream.close(); Toolkit.getDefaultToolkit().beep(); } catch (Exception e)
{
// TODO: handle exception
} }
}报错信息如下:java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at MultiUser.run(MultiUser.java:25)求教各位这是咋回事啊,我是java socket编程初学者

解决方案 »

  1.   

    找到问题所在了,主要是你写得public void actionPerformed(ActionEvent event)
    {
    try
    {
    ObjectOutputStream outStream = new ObjectOutputStream(Client.server
    .getOutputStream());
    //Test test = new Test();
    String str = "Hello world";
    outStream.writeObject(str);
    outStream.close();Toolkit.getDefaultToolkit().beep();} catch (Exception e)
    {
    // TODO: handle exception
    }
    这一块有问题
      

  2.   

    把客户端改成public class Client
    {
    static Socket server; public static void main(String[] args) throws IOException
    {
    server = new Socket(InetAddress.getLocalHost(), 5678); ObjectOutputStream outStream = new ObjectOutputStream(server
    .getOutputStream());
    // Test test = new Test();
    String str = "Hello world";
    outStream.writeObject(str);
    outStream.flush(); server.close();
    }
    }就可以了
      

  3.   

    给你个例子吧,是我以前用Java Socket写的一个聊天室。你可以copy下来运行试试。有用到多线程技术。做得不是很好,希望对你进一步提高有所帮助吧。http://blog.csdn.net/doudou15223155621/archive/2010/03/21/5402190.aspx
      

  4.   

    click代码修改为://@id com.dom.udp.TT.java is created by jiangwh 下午01:28:42/2010-3-24
    package com.dom.udp;import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.net.InetAddress;
    import java.net.Socket;public class Client {
    static Socket server;
    public static void main(String[] args) throws IOException {
    server = new Socket(InetAddress.getLocalHost(), 5678);
    // ActionListener listener = new ActionListener(){
    // @Override
    // public void actionPerformed(ActionEvent actionevent) {
    // try {
    // ObjectOutputStream outStream = new ObjectOutputStream(Client.server.getOutputStream());
    // String str =new String("Hello world");
    // outStream.writeObject(str);
    // outStream.flush();
    // outStream.close();
    // Toolkit.getDefaultToolkit().beep();
    // } catch (Exception e) {
    // e.printStackTrace();
    // }
    // }
    //
    // };
    // Timer t = new Timer(-1, listener);
    // t.start();

    ObjectOutputStream outStream = new ObjectOutputStream(Client.server.getOutputStream());
    String str =new String("Hello world");
    outStream.writeObject(str);
    outStream.flush();
    outStream.close();
    server.close();
    }
    }
      

  5.   


    public static void main(String[] args) throws IOException
    {
    server = new Socket(InetAddress.getLocalHost(), 5678);ActionListener listener = new TimePrinter();Timer t = new Timer(3000, listener);
    t.start();
    //增加,这样程序就可以跑了~
    java.util.Timer timer =new java.util.Timer()
    server.close();
    }