我用socket模拟了一个聊天系统,怎样在同一台机子上跑起来呢??? 我模拟里聊天系统,分别写了客户端和服务器端, 在Eclipse单独都运行,怎么才能实现互动呢?用两个dos窗口我怎么老说不怎么样的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在命令行下分别运行java就行了嘛. 我把程序帖出来看家看看怎么会事的怎么就我的不行呢package Client;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;import java.net.UnknownHostException;public class ClientTest implements Runnable { Socket clientSocket; boolean flag = true; //用于标记是否结束; Thread c ; //想服务器端发送数据; BufferedReader in; DataOutputStream out; /** * @param args */ public void ClientStart() { try { clientSocket = new Socket("localhost",8085); //连接本机 System.out.println("已经连接**************"); //获取对象流 in = new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); out = new DataOutputStream( clientSocket.getOutputStream()); c = new Thread(); c.start(); //启动线程向服务器发送数据; String aline; while((aline = in.readLine())!=null) { System.out.println(aline); if(aline.equals("byte")) { flag = false; c.interrupt(); //中断线程; break ; } } out.close(); in.close(); clientSocket.close(); System.exit(0); //程序运行结束; } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { new ClientTest().ClientStart(); } public void run() { while(true) { try { String ch; BufferedReader in= new BufferedReader( new InputStreamReader(System.in)); while((ch = in.readLine())!=null)//键盘接收字符并向客户发送; { out.writeBytes(ch); if(ch=="\n") out.flush() ; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }package Server;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;public class ServerTest implements Runnable{ ServerSocket server = null; Socket clientSocket; boolean flag = true; Thread c ; BufferedReader in; DataOutputStream out; public static void main(String[] args) { new ServerTest().ServerStart(); } public void ServerStart() { try { server = new ServerSocket(8085); System.out.println("端口号是:"+server.getLocalPort()); while(flag) { clientSocket = server.accept(); //处于监听状态,并返回一个Socket; System.out.println("已经连接**************"); //获取对象流; in = new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); out = new DataOutputStream( clientSocket.getOutputStream()); c = new Thread(); c.start(); //启动线程向客户端发送数据; String aline; while((aline = in.readLine())!=null) { System.out.println(aline); if(aline.equals("byte")) { flag = false; c.interrupt(); //中断线程; break ; } } out.close(); in.close(); clientSocket.close(); System.exit(0); //程序运行结束; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void run() { while(true) { try { String ch; BufferedReader in= new BufferedReader( new InputStreamReader(System.in)); while((ch = in.readLine())!=null)//键盘接收字符并向客户发送; { out.writeBytes(ch); if(ch=="\n") out.flush() ; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //析构方法关掉 public void finalize() { try { server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }} G:\WorkSpace\Socket\Server>java serverException in thread "main" java.lang.NoClassDefFoundError: serverG:\WorkSpace\Socket\Server>运行了抱 Exception in thread "main" java.lang.NoClassDefFoundError: server 这个错 但是在eclipse中是没有的?? 有偿转让Java即时通信工具源程序及设计文档可以学习到专业级的多线程、Socket、Swing图形等Java技术。其中包括设计文档,更适合学生用于毕业设计有意者与[email protected]联系程序在这里http://www.tomore.com/1/37388.html 应该这样运行G:\WorkSpace\Socket> java Server.ServerTest因为你的main方法在ServerTest类中 看到你2个程序都有package,如果你是用eclipse写的,你应该是在Resource perspective下写的吧,在这个下写的程序,直接在命令提示符下运行是会出错的有时候你会发现,把Resource perspective状态下写的程序变成Java perspective下,很多程序都会出错 aywrenyue(基本功修炼中……) 说的是我按照你说说的运行成功了,只是不可以在dos中打字 不知道为什么的?G:\WorkSpace\Socket>java Server.ServerTest端口号是:8083服务器端已经连接**************G:\WorkSpace\Socket>java Client.ClientTest客户端已经连接************** 是不是我的 键盘接受字符有问题,在eclipse能的 但我也自信,键盘接受是没错的! 好久没来提问了,今天提问个多线程编程的问题 高手新手一起板砖鸡蛋砸过来 谁能帮我解决这个问题,很气人。 blank final 懂Java的高手请进,帮小弟一个忙!!!急!!! Java中有什么文本编辑组件能实现超链接? 请问System.out.wtite(87)为何无法输出数据呢? 请问:windows下使用mysql的注册方法? 如何将"February 21st, 2004"转成Date?? 如何在Jtable的单元格中显示图片? 请教 JTable 的困难问题2 始终找不到JDBC驱动,郁闷了 看了别人提的问,没弄明白。求教ListModel的用法。
我把程序帖出来看家看看怎么会事的怎么就我的不行呢
package Client;import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;public class ClientTest implements Runnable {
Socket clientSocket;
boolean flag = true; //用于标记是否结束;
Thread c ; //想服务器端发送数据;
BufferedReader in;
DataOutputStream out; /**
* @param args
*/
public void ClientStart()
{
try {
clientSocket = new Socket("localhost",8085); //连接本机
System.out.println("已经连接**************");
//获取对象流
in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream())); out = new DataOutputStream(
clientSocket.getOutputStream());
c = new Thread();
c.start(); //启动线程向服务器发送数据;
String aline;
while((aline = in.readLine())!=null)
{
System.out.println(aline);
if(aline.equals("byte"))
{
flag = false;
c.interrupt(); //中断线程;
break ;
}
}
out.close();
in.close();
clientSocket.close();
System.exit(0); //程序运行结束;
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args)
{
new ClientTest().ClientStart();
}
public void run()
{
while(true)
{ try {
String ch;
BufferedReader in= new BufferedReader(
new InputStreamReader(System.in));
while((ch = in.readLine())!=null)//键盘接收字符并向客户发送;
{
out.writeBytes(ch);
if(ch=="\n")
out.flush() ;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}package Server;import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;public class ServerTest implements Runnable{
ServerSocket server = null;
Socket clientSocket;
boolean flag = true;
Thread c ;
BufferedReader in;
DataOutputStream out;
public static void main(String[] args)
{
new ServerTest().ServerStart();
}
public void ServerStart()
{
try {
server = new ServerSocket(8085);
System.out.println("端口号是:"+server.getLocalPort());
while(flag)
{
clientSocket = server.accept(); //处于监听状态,并返回一个Socket;
System.out.println("已经连接**************");
//获取对象流;
in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
out = new DataOutputStream(
clientSocket.getOutputStream());
c = new Thread();
c.start(); //启动线程向客户端发送数据;
String aline;
while((aline = in.readLine())!=null)
{
System.out.println(aline);
if(aline.equals("byte"))
{
flag = false;
c.interrupt(); //中断线程;
break ;
}
}
out.close();
in.close();
clientSocket.close();
System.exit(0); //程序运行结束;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run()
{
while(true)
{ try {
String ch;
BufferedReader in= new BufferedReader(
new InputStreamReader(System.in));
while((ch = in.readLine())!=null)//键盘接收字符并向客户发送;
{
out.writeBytes(ch);
if(ch=="\n")
out.flush() ;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//析构方法关掉
public void finalize()
{
try {
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
G:\WorkSpace\Socket\Server>java server
Exception in thread "main" java.lang.NoClassDefFoundError: serverG:\WorkSpace\Socket\Server>运行了抱 Exception in thread "main" java.lang.NoClassDefFoundError: server
这个错 但是在eclipse中是没有的??
有意者与[email protected]联系程序在这里
http://www.tomore.com/1/37388.html
因为你的main方法在ServerTest类中
有时候你会发现,把Resource perspective状态下写的程序变成Java perspective下,很多程序都会出错
说的是我按照你说说的运行成功了,只是不可以在dos中打字 不知道为什么的?G:\WorkSpace\Socket>java Server.ServerTest
端口号是:8083
服务器端已经连接**************G:\WorkSpace\Socket>java Client.ClientTest
客户端已经连接**************