package SocketDemo;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;public class loginClient {
public static void main(String[] args){
try {//建立客户端socket连接 ,指定服务器位置,急端口
Socket socket=new Socket("localhost",8888);
//得到socket的读写流
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
//输入流
InputStream is=socket.getInputStream();
    BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info="用户名:tom;用户密码:123456";
pw.write(info);
pw.flush();
socket.shutdownOutput();//关闭输出流

    //接受服务器响应
    String reply=null;
while(!((reply=br.readLine())==null)){
System.out.println("我是客户端!!服务器端的响应是"+reply);
}
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}package SocketDemo;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class LoginServer {
  public static void main(String [] args){
  try {
  //建立服务器Socket对象,绑定端口开始监听,建议使用大于1024端口
ServerSocket ss=new ServerSocket(8888);
//使用accpet方法阻塞等待监听,获得连接

Socket socket=ss.accept();
//获得输入流
InputStream is=socket.getInputStream();
    BufferedReader br=new BufferedReader(new InputStreamReader(is));
//获得输出流
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);


// 读取输入信息
String info=null;
while(!((info=br.readLine())==null)){
System.out.println("我是服务器!!用户信息为"+info);
}
String reply="welcome";
pw.write(reply);
pw.flush();
pw.close();
os.close();
br.close();
is.close();
socket.close();
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  }
}服务器端怎么报异常?? 谢谢

解决方案 »

  1.   

    试了一个,没有问题,读入在这里我推荐用 InputStream is=socket.getInputStream();
                     Scanner in = new Scanner(is);Scanner和 PrintWriter 一起推荐!
      

  2.   

    java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
    at java.net.ServerSocket.bind(ServerSocket.java:319)
    at java.net.ServerSocket.<init>(ServerSocket.java:185)
    at java.net.ServerSocket.<init>(ServerSocket.java:97)
    at SocketDemo.LoginServer.main(LoginServer.java:16)
    找不到原因。。
      

  3.   

    java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
    at java.net.ServerSocket.bind(ServerSocket.java:319)
    at java.net.ServerSocket.<init>(ServerSocket.java:185)
    at java.net.ServerSocket.<init>(ServerSocket.java:97)
    at SocketDemo.LoginServer.main(LoginServer.java:16)
    找不到原因哎,搞了半天了
      

  4.   

    似乎是有程序占用了8888端口,也有可能是你上一个LoginServer服务还没强制关闭。你换个端口试试看。
      

  5.   

    可以在CMD命令行检查下,比如:C:\> netstat -ano | find "8080"
      

  6.   

    我换端口 还是报同样的异常,代码没问题的话,是不是jvm的问题啊
      

  7.   

    只能是环境问题。netstat -ano | find "8888"有啥显示?
      

  8.   

    我是win7的系统  我进cmd  显示netstat -ano | find "8888"不是内部命令
      

  9.   

    吐血啊,你啥版本的Win7。。我也是win7,旗舰版。网上去下载个:Tcpview.exe 吧,才92KB,专门用来看端口号的。
    也可以用Win7自带的工具“资源监视器”,把这个名字直接输入开始按钮的那个搜索框就可以启动,然后看“网络”选项卡,下面有个侦听端口。客观地说,我确实比较怀疑是你重复启动服务器端导致。
      

  10.   

    当然,你启动两次,肯定是不行的,端口只能被侦听一次的。你这样修改下,就能看到启动了:
    public static void main(String [] args){
      try {
      //建立服务器Socket对象,绑定端口开始监听,建议使用大于1024端口
      ServerSocket ss=new ServerSocket(8888);  System.out.println("开始侦听8888");  Socket socket=ss.accept();  System.out.println("有客户端成功连接");
      

  11.   

    运行了客户端么?
    public class loginClient {
    public static void main(String[] args){
      try {//建立客户端socket连接 ,指定服务器位置,急端口
       System.out.println("尝试连接服务器8888");
       Socket socket=new Socket("localhost",8888);
       System.out.println("服务器连接成功");
       //得到socket的读写流
       OutputStream os=socket.getOutputStream();
       PrintWriter pw=new PrintWriter(os);