*设为首页
*加入收藏
热门关键字: JAVA
>>当前位置:Java大本营>Socket编程>文章内容
java网络编程学习
作者: 发布时间:2007-12-06 18:16:16

java网络程序致力于实现应用层,传输层向应用层提供的socket接口.

服务器端和客户端使用socket通信的简单程序 

echoServer.java服务端程序

 

/**
 * 
 
*/

package et.bo.sun._1;

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;

/**
 * 
@author zhangfeng
 * 
 
*/

public class EchoServer {

    
private int port = 8000;

    
private ServerSocket serverSocket;

    
public EchoServer() throws IOException {
        serverSocket 
= new ServerSocket(port);
        System.out.println(
"服务器启动");
    }


    
public String echo(String msg) {
        
return "echo" + msg;
    }


    
// 输出流,发送信息
    private PrintWriter getWriter(Socket socket) throws IOException {
        OutputStream socketOut 
= socket.getOutputStream();
        
return new PrintWriter(socketOut, true);
    }


    
// 输入流,接收信息
    private BufferedReader getReader(Socket socket) throws IOException {
        InputStream socketIn 
= socket.getInputStream();
        
return new BufferedReader(new InputStreamReader(socketIn));
    }


    
public void service() {
        
while (true{
            Socket socket 
= null;
            
try {
                socket 
= serverSocket.accept(); // 等待客户连接
                
// 得到远端连接ip和端口
                System.out.println("有新的连接.." + socket.getInetAddress() + ":"
                        
+ socket.getPort());
                
// 打开通道
                BufferedReader br = getReader(socket);
                PrintWriter pw 
= getWriter(socket);

                String msg 
= null;
                
while ((msg = br.readLine()) != null{
                    System.out.println(msg);
                    pw.println(echo(msg));
                    
if (msg.equals("bye")) {
                        
break;
                    }

                }

            }
 catch (Exception e) {
                
// TODO: handle exception
                e.printStackTrace();
            }
 finally {
                
try {
                    
if (socket != null{
                        socket.close();
                    }

                }
 catch (Exception e) {
                    
// TODO: handle exception
                    e.printStackTrace();
                }

            }

        }

    }


    
public static void main(String[] args) throws IOException {
        
new EchoServer().service();// 启动服务器
    }


}

运行后可启动服务器端,
客户端代码

 

/**
 * 
 
*/

package et.bo.sun._1;

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;

/**
 * 
@author zhangfeng
 * 
 
*/

public class EchoClient {

    
private String host = "localhost";

    
private int port = 8000;

    
private Socket socket;

    
public EchoClient() throws IOException {
        
// 向哪个服务端做连接
        socket = new Socket(host, port);
    }


    
// 输出流,发送信息
    private PrintWriter getWriter(Socket socket) throws IOException {
        OutputStream socketOut 
= socket.getOutputStream();
        
return new PrintWriter(socketOut, true);
    }


    
// 输入流,接收信息
    private BufferedReader getReader(Socket socket) throws IOException {
        InputStream socketIn 
= socket.getInputStream();
        
return new BufferedReader(new InputStreamReader(socketIn));
    }


    
public void talk() throws IOException {
        
try {
            
// 打开通道
            BufferedReader br = getReader(socket);
            PrintWriter pw 
= getWriter(socket);

            
// 创建本地输入
            BufferedReader localReader = new BufferedReader(
                    
new InputStreamReader(System.in));
            String msg 
= null;
            
while ((msg = localReader.readLine()) != null{
                pw.println(msg);
                System.out.println(br.readLine());

                
if (msg.equals("bye")) {
                    
break;
                }

            }

        }
 catch (Exception e) {
            
// TODO: handle exception
            e.printStackTrace();
        }
 finally {
            
try {
                
if (socket != null{
                    socket.close();
                }

            }
 catch (Exception e) {
                
// TODO: handle exception
                e.printStackTrace();
            }

        }

    }


    
public static void main(String[] args) throws IOException {
        
new EchoClient().talk();
    }


}

 

运行可完成客户向服务端发信息,服务端返回相应的信息的功能.



·充分理解Socket(02-25)
·Socket编程指南及程序示例 (01-27)
·基于Java Socket的文件UpLoad代码 (12-07)
·secket 的几种构造方法(12-06)
·Java网络服务器编程 (12-05)
·Java网络编程 (12-05)
·Java开发环境简介(12-05)
·Java网络编程学习笔记(12-05)
·基于Socket的Java网络编程(12-05)
·Java网络编程-用SSL构建安全的Socket (12-05)
·Java聊天程序的实现(12-04)
·简单的双向消息发送的聊天程序(java) (12-04)
复制地址发给您的好友: [推荐文章] [返回顶部] [关闭窗口]
版权所有 Java大本营 1999-2007 转载请注明出处