首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 通过JavaSocket来读取客户端字符显示到服务器端
【标  题】:通过JavaSocket来读取客户端字符显示到服务器端
【关键字】:JavaSocket
【来  源】:http://blog.csdn.net/mildo/archive/2006/11/01/1360115.aspx

通过JavaSocket来读取客户端字符显示到服务器端

        java网络编程只要有两个大的方面,一个是通过UDP(数据报传输协议),它使用的实现技术是DatagramSocket和DatagramPacket来建立连接,对数据进行发送和接受,但是UDP是不保证数据的完整性和可靠性,发出方不管接收方是否已经准备好,相当于寻呼机模式,因此安全性不高;还有一种就是通过TCP协议进行传输,TCP是一种可靠性连接,通过建立客户端和服务器端的连接来保证数据的完整性和安全性,因此应用要广泛。

         下面是一个经典的面试题,通过JavaSocket来读取客户端字符显示到服务器端,一般看到这个题目,马上会想到利用ServerSocket和Socket来建立连接,然后再通过InputSteamReader和OutputStreamReader来对数据进行流处理,这里还用到了BufferedReader和in.readLine()是用来做一个缓冲和整行读取的功能,利用System.in来获取键盘输入。

程序清单: Server.java ;Client.java  程序测试通过

package test;

import java.io.*;
import java.net.*;

/**
 * 面试题:读取服务器几个字符,在从本地显示
 * 服务器端程序。
 
*/


public class Server
{
    
private ServerSocket ss;
    
private Socket socket;
    
private BufferedReader in;
    
private PrintWriter out;
    
    
public Server() //构函
    {
        
try
        
{
            ss 
= new ServerSocket(10000); //port is 10000
            while(true//这不算是死循环吗?
            {
                socket 
= ss.accept(); //接受连接
                String RemoteIp = socket.getInetAddress().getHostAddress(); //ip
                String RemotePort = ":"+socket.getLocalPort(); //port
                System.out.println("A client come in ! IP:"+RemoteIp+RemotePort);
                in 
= new BufferedReader(new InputStreamReader(socket.getInputStream()));
                
//in 为读取缓冲流,从客户端读取                
                String line = in.readLine(); //把in流转换成String
                System.out.println("Client send is:"+line);
                out 
= new PrintWriter(socket.getOutputStream(),true); //true指定是否缓冲
                out.println("Your Message Recevied !");
                out.close();
                in.close();
                socket.close();
            }

        }

        
catch(IOException e)
        
{
            out.println(
"wrong...");
        }

    }

    
    
public static void main(String[] args)
    
{
        
new Server();
    }

}

   客户端程序: Client.java

package test;

import java.net.*;
import java.io.*;

/**
 * 面试题:读取服务器几个字符,在从本地显示
 * 客户端程序。
 
*/

 
 
public class Client
 
{
     Socket socket;
     BufferedReader in;
     PrintWriter out;
     
     
public Client()
     
{
         
try
         
{
             System.out.println(
"Try to Connect to localhost/127.0.0.1:10000");
             socket 
= new Socket("127.0.0.1",10000); //建立和ServerSocket的连接
             System.out.println("The Server Connected !");
             System.out.println(
"Please Enter some Character .");
             BufferedReader line 
= new BufferedReader(new InputStreamReader(System.in));
             out 
= new PrintWriter(socket.getOutputStream(),true);
             out.println(line.readLine()); 
//按行输出
             in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
             System.out.println(in.readLine()); 
//按行输入
             out.close();
             in.close();
             socket.close();
         }

         
catch(IOException e)
         
{
             out.println(
"wrong ...");
         }

     }

     
     
public static void main(String[] args)
     
{
         
new Client();
     }

 }
 
从山丘锤王之死谈Spring AOP中的引介(Introduction):【上一篇】
SWT Layout 使用场景:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 注册表修改技巧
  • 了解考试系列:三级信息管理技术的软件环境、考试时间、考试题型及分值
  • 如何区分大小写比较
  • 附录A、常用字符的7位ASCII值
  • 直接用socket实现HTTP下载
  • Tomcat的数据源配置详解
  • vb6.0实现soap的客户端
  • Java 字符串转换三合一工具
  • DevCo 选择Nick Hodges作为产品经理
  • 又一周了
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.