服务器端并没有等到客户端的连接!将服务器端的
Socket socket = srv.accept();
改成:
Socket socket = null;
while(true){
socket = srv.accept();
if(socket=!null)
break;
}
//do some thing here
Socket socket = srv.accept();
改成:
Socket socket = null;
while(true){
socket = srv.accept();
if(socket=!null)
break;
}
//do some thing here
解决方案 »
- Java FileNotFoundException异常疑问
- 令人不可思议的一个java类型转换问题
- 关于JAVA扫雷程序的一点点难题
- 请教有关client和server之间沟通的问题
- 关于使用java.util.GregorianCalendar类的奇怪问题---烦请高手给以解答
- 求个网站地址----哎,分越来越少了...5555 .. ;(
- 为什么JAVA API文档中老是出现<T>是类似C++中的模板吗?是的话在JAVA中要怎么理解
- Java虚拟机与多线程管理问题(100分相求)。
- APPLET读取网络上文件总是抛出异常
- 字符串比较问题?
- jdbc的简单问题
- 找不到applet所需的类!!!!!!!!!!!!!!!!!
import java.net.*;
import java.io.*;public class Server
{
public static void main(String args[])
{
try {
int port = 4000;
ServerSocket srv = new ServerSocket(port);
System.out.println("开始监听");
Socket socket = srv.accept();
BufferedReader rd =
new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str;
while ((str = rd.readLine()) != null) {
System.out.println(str);
}
rd.close();
socket.close();
srv.close();
} catch (IOException e) {
System.out.println(e);
} }
}客户端://Client.java
import java.net.*;
import java.io.*;public class Client
{
public static void main(String args[])
{
try {
InetAddress addr = InetAddress.getByName("localhost");
int port = 4000;
SocketAddress sockaddr = new InetSocketAddress(addr, port);
System.out.println(addr.toString());
Socket sock = new Socket();
int timeoutMs = 5000;
sock.connect(sockaddr, timeoutMs); BufferedWriter wr =
new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
wr.write("123");
// newLine()是为了输出换行符,因为服务器端用的是readLine().
// 单纯的写成wr.write("\r");或wr.write("\n");都不好,
// 不同操作系统的换行符是不一样的。
wr.newLine();
wr.flush();
//等待2秒,是为了等服务器端接收到数据,再关闭客户端连接
//否则,服务器端还没有收到数据,客户端就已经把连接关闭了
Thread.sleep(2000);
} catch (UnknownHostException e) {
System.out.println(e);
} catch (SocketTimeoutException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}catch (InterruptedException e) {
System.out.println(e);
} }
}============================另外:最好不要用BufferedReader和BufferedWriter来读取socket数据,因为他们读取到的数据都是经过编码解码的数据,不是原始数据。一般socket编程都用InputStream和OutputStream来读取数据,这样可以读取到最原始的数据,而不是经过编码解码的数据。