`
zzg
  • 浏览: 124544 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Socket初级应用

阅读更多
模拟了一个聊天的程序,通过xml通讯,以下是server端,及client端的部分代码。

server端:


public class Server {
    private ServerSocket ss;
    private Socket socket;
   
    ServerFrame serverFrame = null;

    public Server(ServerFrame serverFrame) {
        this.serverFrame = serverFrame;
        try {
            /*新建套接字服务器*/
            ss = new ServerSocket(ConfigFactory.getInstance().getLocal_port());

            while (true) {
                try{
                    /*侦听并接受到此套接字的连接,接受到的链接扔到新建的thread处理*/
                    socket = ss.accept();
                    new CreateServerThread(socket,serverFrame).start();       
                }catch(Exception e){
                    throw new Exception();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }catch(Exception e1){
            e1.printStackTrace();
        }finally{
            if(ss!=null){
                try{
                    ss.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
               
            }
        }
    }
}

public class CreateServerThread extends Thread{

    private Socket socket;
    private BufferedReader in;
    private PrintWriter out;
    ServerFrame serverFrame;
   
    public CreateServerThread(Socket s,ServerFrame serverFrame) throws Exception{
        this.socket = s;
        this.serverFrame = serverFrame;
       
    }
   
    public void run(){
                try{
                    /*侦听并接受到此套接字的连接*/

                   
                    /*返回此套接字的输入流--(字节流转换为字符流,并且从字符输入流中读取文本)*/
                    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                   
                    /*返回此套接字的输出流*/
                    out = new PrintWriter(socket.getOutputStream(), true);

                    /*读取BufferedReader中的字符流*/
                    String line=null;
                    StringBuffer sb = new StringBuffer();
                    while((line=in.readLine())!=null){
                        sb.append(line+"\n");
                    }
                   
                    /*读取一个文本行*/
                    line = sb.toString();
                   
                    /*接受socket端发送过来的信息,并显示在页面上*/
                    MessageForm message = new ParseXml().parse(line);
                    serverFrame.setText(message.getName() + "   说:  " + message.getTime() + "\n  " + message.getContent() + "\n");
                   
                }catch(Exception e){
                    e.printStackTrace();
                }finally{
                    if(out!=null){
                        try{
                            in.close();
                        }catch(Exception e){
                            e.printStackTrace();
                        }
                        out.close();
                    }
                    if(in!=null){
                        try{
                            in.close();
                        }catch(Exception e){
                            e.printStackTrace();
                        }
                    }
                    if(socket!=null){
                        try{
                            socket.close();
                        }catch(Exception e){
                            e.printStackTrace();
                        }
                    }
                }

    }
}

client端:

public class Client {
    Socket socket;
    BufferedReader in;
    PrintWriter out;

    public Client(String server_ip,int server_port,String str) {
       
        try {
                this.init(str);
                /*创建一个流套接字并将其连接到指定主机上的指定端口号*/
                socket = new Socket(server_ip, server_port);
               
                /*返回此套接字的输入流--(字节流转换为字符流,并且从字符输入流中读取文本)*/
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
               
                /*返回此套接字的输出流*/
                out = new PrintWriter(socket.getOutputStream(), true);
               
//                BufferedReader line = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(str.getBytes())));

                BufferedReader line = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\oneXml.xml")));
               
                out.println(line.readLine());
                line.close();
                out.close();
                in.close();
                socket.close();
           
           
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
   
    public InputStream init(String message){
        BuildXml bx = new BuildXml();
        MessageForm form = new MessageForm();
        String tempPath = "d:\\oneXml.xml";
       
        form.setContent(message);
        form.setIp("127.0.0.1");
        form.setName("大脸猫");
        form.setTime(new SimpleDateFormat("yyyy/MM/dd hh:mm").format(new Date()).toString());
       
        return null;
    }

}
分享到:
评论

相关推荐

    D7 SOCKET 应用演示

    描述中提到 "DELPHI SOCKET 应用演示 网络通信初级例子 含生成服务端例子",这表明该压缩包包含了一个简单的教学示例,用于帮助初学者理解如何在 Delphi 7 中实现客户端和服务端的 Socket 通信。Socket 编程通常包括...

    HP Socket 测试案例 仅供参考 初级使用

    本测试案例专注于HP Socket的初级使用,旨在帮助初学者理解和实践Socket通信的基本原理和操作。以下将详细阐述Socket测试的相关知识点。 首先,让我们了解什么是Socket。Socket,又称为“套接字”,是网络编程中的...

    一个基于SOCKET套接字的小程序,适合初级程序员参考使用

    这个“基于SOCKET套接字的小程序”显然旨在为初级程序员提供一个学习和实践的平台,帮助他们理解如何使用SOCKET进行网络通信。下面将详细阐述SOCKET套接字的相关知识点。 1. **什么是SOCKET套接字?** SOCKET套接...

    Java Socket网络编程初级入门

    Java Socket网络编程是Java开发中实现网络通信的基础,它提供了客户端和服务器端进行数据交换的接口。在Java SDK中,`java.net`...通过这些基本组件,开发者可以构建出复杂的网络应用,实现不同计算机之间的数据交换。

    SocketTool.rar

    6. **简单易用的界面**:SocketTool的界面设计友好,操作直观,无论是初级开发者还是经验丰富的网络工程师都能迅速上手。 7. **自由度高**:用户可以根据需要配置各种参数,如超时时间、重试次数、缓冲区大小等,以...

    socket初学,高手勿BS

    "socket初学,高手勿BS"这个标题暗示我们将探讨Socket编程的初级概念,适合初学者入门。描述中提到的编译过程和运行命令,表明我们有两个Java程序,一个是MyServer,另一个是MyClient,它们将通过Socket进行交互。 ...

    VC++_socket网络通信基础

    Socket接口源自UNIX系统,后来被广泛应用于Windows和其他操作系统,为开发者提供了一种标准的方式来创建网络应用程序。本教程面向VC++初、中级学习者,旨在帮助你们理解和掌握Socket网络通信的基本概念和实践技巧。 ...

    android下的socket开发源代码

    在Android平台上进行Socket开发是构建网络通信应用的关键技术之一,特别是在需要实现设备间数据传输时。这份源代码提供了一个简单的示例,展示了如何在Android客户端和PC之间建立连接,实现文件共享。虽然它可能适用...

    VC Socket代码

    初级的Socket编程示例可能包括一个简单的客户端和服务器程序,客户端连接服务器,发送一条消息,然后接收并显示服务器的响应。服务器则监听连接,接收客户端消息,并返回一条确认消息。 9. **多线程应用** 对于...

    基于Java的socket的网络聊天程序

    在本项目中,"基于Java的socket的网络聊天程序"是一个初级程序员使用Java Socket API实现的练习项目,旨在理解并应用网络通信的基本概念。 首先,我们要理解Java中的Socket。Socket是TCP/IP协议族的一部分,它提供...

    VC编写的socket简单聊天程序

    总的来说,"VC编写的socket简单聊天程序"是一个基于VC和Winsock的初级示例,它可以帮助初学者理解Socket编程的基本概念,包括网络连接、数据交换以及简单的用户交互。虽然对于经验丰富的开发者来说,这个程序可能...

    java socket 简单成绩管理系统

    Java Socket 简单成绩管理系统是一个基于JAVA编程语言和Socket通信技术实现的初级项目,它主要目的是帮助初学者理解如何运用Socket进行网络通信,并在实际应用中管理学生的成绩。在这个系统中,通常会包含服务器端...

    基于Socket的TCP和UDP聊天程序代码

    本主题聚焦于"基于Socket的TCP和UDP聊天程序代码",提供了完整的Java工程文件,帮助开发者理解如何利用这两种传输协议创建聊天应用程序。TCP(传输控制协议)和UDP(用户数据报协议)是Internet协议族中的两种主要...

    VB.NET-simple-socket-program.rar_VB.NET Socket_vs vb socket

    VB.NET是一种基于.NET框架的编程语言,用于构建各种应用程序,包括网络通信程序。Socket编程是网络编程中的基础,它允许程序通过网络发送和接收数据。本项目是一个简单的VB.NET Socket程序,展示了如何在VB.NET中...

    SANGFOR_SSL_v7.0_2016年度渠道初级认证培训05_远程应用发布功能培训.ppt

    SANGFOR SSL v7.0 远程应用发布功能是一项旨在提升企业网络安全性和便捷性的技术,它允许用户通过SSL(Secure Socket Layer)虚拟私有网络访问内网的应用程序,而无需在本地设备上安装客户端软件。这一功能在2016...

    简明socket编程指南

    - **特点**: 相较于 BSD Socket,在 DOS 下提供的 WATTCP 接口更简单直观,更适合初级用户。由于 DOS 不具备像 Unix 那样的强大文件系统支持,因此 WATTCP 的设计更偏向于直接支持 TCP/IP 通信。 - **兼容性**: ...

    Socket网络编程下载资料

    Socket,通常被称为套接字,是网络编程中的一个接口,它允许应用程序通过网络发送和接收数据。在操作系统层面,Socket是进程间通信(IPC)的一种方式,特别用于实现跨网络的通信。在TCP/IP协议栈中,Socket提供了低...

    C++ and Socket 通信实例

    本文将详细讲解C++与Socket通信的基本概念、实现过程以及相关实例,旨在帮助初级学习者理解并掌握这一技术。 首先,Socket(套接字)是网络编程中的一个重要概念,它为应用程序提供了在网络层面上发送和接收数据的...

    Socket_cplus.zip

    Socket,也称为套接字,是应用层与传输层之间的接口,它允许编程人员编写能够通过网络进行通信的应用程序。在C++中,通常使用Berkeley Sockets API来实现Socket通信。这个API提供了一系列的函数,如`socket()`、`...

    socke编程初级教程

    在IT领域,Socket编程是构建网络应用程序的核心技术之一,尤其对于网络通信的实现至关重要。本教程旨在为初学者提供一个基础的Socket编程学习路径,帮助理解网络通信的基本原理,并掌握利用Socket进行程序开发的方法...

Global site tag (gtag.js) - Google Analytics