想实现的功能为在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编程初学者
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编程初学者
{
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
}
这一块有问题
{
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();
}
}就可以了
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();
}
}
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();
}