跟着做的,可是有错误,关于socket,,,

来源:3-4 完善用户登陆之服务器响应客户端

啊梨真神奇

2016-02-28 20:35

package com.imooc;

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;


/*

 * 基于TCP协议的Socket通信,实现用户登录         

 * 服务器端

 */

public class Server {

public static void main(String[] args) {

try {//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口

ServerSocket serverSocket=new ServerSocket(8888);

//2.调用accept()方法开始监听,等待客户端的连接

System.out.println("******服务器即将启动等待客户端的连接**********");

Socket socket=serverSocket.accept();

//3.获取输入流,读取客户端信息

InputStream is=socket.getInputStream();//字节输入流

InputStreamReader isr=new InputStreamReader(is);//将字节流转换为字符流

BufferedReader br=new BufferedReader(isr);//为字符流添加缓冲

String info=null;

while((info=br.readLine())!=null){

System.out.println("我是服务器。客户端说 :"+info);

}

socket.shutdownInput();//关闭输入流

//4.获取输出流,响应客户端的请求

OutputStream os=socket.getOutputStream();

PrintWriter pw=new PrintWriter(os);//包装为打印流

pw.write("欢迎您!");//响应客户端

pw.flush();//刷新缓存

//5.关闭资源

pw.close();

os.close();

is.close();

isr.close();

br.close();

serverSocket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}





package com.imooc;


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 Client {

public static void main(String[]args){          

try {

//1.创建客户端Socket,指定地址和服务器端口

Socket socket;

socket = new Socket("localhost",8888);

//2.获取输出流,向服务器端发送信息

OutputStream os= socket.getOutputStream();

//字节输出流

PrintWriter pw=new PrintWriter(os);//将输出流转换为打印流

pw.write("用户名:admin;密码:123");

socket.shutdownOutput();//关闭输出流,写入的数据将被发送

//3.获取输入流,并获取服务器端的响应信息

InputStream is=socket.getInputStream();

BufferedReader br=new BufferedReader(new InputStreamReader(is));

String info=null;

while((info=br.readLine())!=null){

System.out.println("我是客户端,服务器端说:"+info);

}

//4.关闭资源

os.close();

pw.close();

socket.close();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

http://img.mukewang.com/56d2e97e000112cf07090334.jpg

写回答 关注

1回答

  • 神帝
    2016-02-29 03:07:46

    是不是先启动了客户端。客户端的socket声明的时候初始化为null试试

    zhangd... 回复啊梨真神奇

    是不是电脑弹出来请求页面,你给拒绝了?

    2016-03-10 11:29:17

    共 2 条回复 >

Java Socket应用---通信是这样练成的

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

125012 学习 · 590 问题

查看课程

相似问题