服务器端程序:package mytest;import java.net.*;
import java.io.*;
import java.util.*;public class Server {
private ServerSocket server;
private DataInputStream input;
private DataOutputStream output;
public static Vector vc_client = new Vector(); public Server() {
//创建服务器套接字
try {
server = new ServerSocket(50000);
} catch (IOException ex) {
ex.printStackTrace();
}
} public void serverStart() {
System.out.println("=======start==========");
//获取与客户机连接的套接字
int i = 0;
while (true) {
try {
Socket client = server.accept();
System.out.println("========accept:" + (i + 1) + "==========");
vc_client.add(client); Accep acp = new Accep(client);
System.out.println("=======begin===========");
acp.start();
System.out.println("=====acp.start();========"); } catch (IOException ex1) {
ex1.printStackTrace();
}
}
}
public static void main(String[] args) {
Server server = new Server();
server.serverStart();
} class Accep extends Thread {
Object obj;
Socket sock; Accep(Socket cli) {
this.sock = cli;
try {
input = new DataInputStream(sock.getInputStream());
output = new DataOutputStream(sock.getOutputStream());
} catch (IOException ex) {
ex.printStackTrace();
} } public void run() {
int i = 0;
try {
System.out.println("========ok,me start=========");
while ((obj = input.readUTF()) != null) {
System.out.println((i + 1) + "------>" + obj.getClass());
output.writeUTF("sss");
}
} catch (IOException ex) {
ex.printStackTrace();
} finally { try {
if (output != null) {
output.close();
}
if (input != null) { input.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
} }
}}
客户端程序:package mytest;import java.net.*;
import java.io.*;
import java.util.*;public class Client {
private DataInputStream input;
private DataOutputStream output;
Socket client ; public Client() { } public void clientStart(){
try {
System.out.println("========start=========");
client = new Socket("192.168.0.50", 50000);
System.out.println("========accep===========");
Accep acp = new Accep(client);
acp.start();
} catch (UnknownHostException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} } public static void main(String[] args) {
Client client = new Client();
client.clientStart();
} class Accep extends Thread{
Object obj;
Socket sock ; Accep(Socket cli){
this.sock = cli;
try {
input = new DataInputStream(sock.getInputStream());
output = new DataOutputStream(sock.getOutputStream());
} catch (IOException ex) {
ex.printStackTrace();
} } public void run(){
int i = 0;
try {
while ((obj = input.readUTF()) != null) {
System.out.println(i + "------>" + obj.getClass());
output.writeUTF("sss");
}
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}}
程序走不到线程处理部分。请各位帮忙解决啊。
先谢谢各位了!!!!
import java.io.*;
import java.util.*;public class Server {
private ServerSocket server;
private DataInputStream input;
private DataOutputStream output;
public static Vector vc_client = new Vector(); public Server() {
//创建服务器套接字
try {
server = new ServerSocket(50000);
} catch (IOException ex) {
ex.printStackTrace();
}
} public void serverStart() {
System.out.println("=======start==========");
//获取与客户机连接的套接字
int i = 0;
while (true) {
try {
Socket client = server.accept();
System.out.println("========accept:" + (i + 1) + "==========");
vc_client.add(client); Accep acp = new Accep(client);
System.out.println("=======begin===========");
acp.start();
System.out.println("=====acp.start();========"); } catch (IOException ex1) {
ex1.printStackTrace();
}
}
}
public static void main(String[] args) {
Server server = new Server();
server.serverStart();
} class Accep extends Thread {
Object obj;
Socket sock; Accep(Socket cli) {
this.sock = cli;
try {
input = new DataInputStream(sock.getInputStream());
output = new DataOutputStream(sock.getOutputStream());
} catch (IOException ex) {
ex.printStackTrace();
} } public void run() {
int i = 0;
try {
System.out.println("========ok,me start=========");
while ((obj = input.readUTF()) != null) {
System.out.println((i + 1) + "------>" + obj.getClass());
output.writeUTF("sss");
}
} catch (IOException ex) {
ex.printStackTrace();
} finally { try {
if (output != null) {
output.close();
}
if (input != null) { input.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
} }
}}
客户端程序:package mytest;import java.net.*;
import java.io.*;
import java.util.*;public class Client {
private DataInputStream input;
private DataOutputStream output;
Socket client ; public Client() { } public void clientStart(){
try {
System.out.println("========start=========");
client = new Socket("192.168.0.50", 50000);
System.out.println("========accep===========");
Accep acp = new Accep(client);
acp.start();
} catch (UnknownHostException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} } public static void main(String[] args) {
Client client = new Client();
client.clientStart();
} class Accep extends Thread{
Object obj;
Socket sock ; Accep(Socket cli){
this.sock = cli;
try {
input = new DataInputStream(sock.getInputStream());
output = new DataOutputStream(sock.getOutputStream());
} catch (IOException ex) {
ex.printStackTrace();
} } public void run(){
int i = 0;
try {
while ((obj = input.readUTF()) != null) {
System.out.println(i + "------>" + obj.getClass());
output.writeUTF("sss");
}
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}}
程序走不到线程处理部分。请各位帮忙解决啊。
先谢谢各位了!!!!
解决方案 »
- 请问J2SE怎么让map里的时间和歌词跟着播放器同步播放~~~
- informix数据库中模糊为何无结果, 同样的语句在SQL2000中有结果?
- 跳槽问题(急)
- 请教一个读取字符串的问题.
- 关于Vector的问题
- 编译都通过了,就是运行不起来。。新人跪求
- 记事本好,editplus好,UltraEdit好,还是JCreator好 ?(发表意见者有分)
- 笔试题
- 关于取组件的大小的问题,请教高手
- 如何新建立一个XML文件并且把别的XML文件引入到这个XML文件中(再线等待)
- 网络通讯中的数据封包问题
- 为什么报java.lang.ArrayIndexOutOfBoundsException: 8192
后来我也检查出来这有问题了。但在客户端加上一句代码,只要SOCKET接通,客户端就给服务端发送一条信息,结果还是没出来。
再次请教!
该帖可以结贴了!!!服务器端和客户端的输入输出对象NEW的顺序要对应
也就是说,在服务器端
ObjectInputStream input = new ObjectInputStream (sockt.getInputStream );
ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream );那么,在客户端就必须是:
ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream );
ObjectInputStream input = new ObjectInputStream (sockt.getInputStream );这样NEW的原因在于:
建立ObjectInputStream对象是需要先接收一定的header数据,接收到这些数据之前
会处于阻塞状态。故而为了防止这种死锁状态,通讯两方的
ObjectInputStraem,ObjectOutputStream必须注意顺序对应使用。