青鸟菜鸟,请教各位网络编程大侠们,初学Socket,客户端/服务器端不能交互,指点菜鸟一下
package server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
*
* 服务器端
* @author Administrator
*
*/
public class EchoServer {
//定义 监听端口
public static final int PORT=8081;
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//建立ServerSocket对象, 监听端口号为8080
ServerSocket server = new ServerSocket(PORT);
System.out.println("服务器启动:" + server);
try {
//服务器启动监听, 等待客户连接
Socket socket = server.accept();
try {
System.out.println("建立连接: " + socket);
//获取Socket输入流(读取流), 并用BufferedReader包装
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
//获得Socket输出流(写入流), 并用PrintWriter包装
PrintWriter writer = new PrintWriter(socket.getOutputStream(),
true);
//使用无限循环
while (true) {
//在输入流(读取流)中每次读入一行数据,
String string = reader.readLine();
//如果输入流 读取到 end 字符串 就结束
if (string.equals("end")) {
break;
}
//并输入控制台,
System.out.println("来自 客户端---->:" + string);
//同时把数据在写入输出流(写入流),返回客户端
writer.println(string);
}
}
finally {
System.out.println("关闭连接");
socket.close();
}
}finally {
System.out.println("关闭服务器");
server.close();
}
}
}
------------------------------------------------------------------------------------------------------------
package client;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
import com.sun.corba.se.spi.orbutil.fsm.Input;
/**
*
* 客户端
* @author Administrator
*
*/
public class Client {
///定义 服务器主机名(localhost)
private static String serverAddress="localhost";
///定义 服务器端口(8080), 注意不能使用
private static int port=8081;
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建Socket对象
Socket socket=new Socket(serverAddress,port);
try {
//输出socket信息, 包括 主机地址 和 端口号信息
System.out.println("socket=" + socket);
//获取Socket对象的输入流,并用BufferedReader缓冲, 以便于调用ReaderLine() 方法一次一行
//地读入输入流数据
BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//获取输出流
//true: 没写入一行数据 就清空缓冲
PrintWriter writer=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
System.out.println("客户端 的 用户 请输入传递数据:");
BufferedReader localreader=new BufferedReader(new InputStreamReader(System.in));
String msg=null;
while ((msg=localreader.readLine())!=null){
//把每次读到的数据 写入 输出流中
writer.print(msg);
//从输入流中读取服务器 返回数据
System.out.println("从 服务器---->:" + reader.readLine());
//如果控制输入的"END", 则跳出While循环, 断开连接
if(msg.equals("end")){
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
System.out.println("关闭连接");
try {
socket.close();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
}
------------------------------------------------------------------------------------------------------
全套代码, 我能意识到的是, 原先我那个 笔记本 没有连通 互联网,网络标识 红 X
能意识到的 就是 这个 问题 ,请问 网络编程高手们 懂Socket的指点迷津
本人 初学 Socket,不懂的还请各位 指点,这个的用处