`
lvwenwen
  • 浏览: 958929 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

socket发送接收消息(String message)

阅读更多
package com.qingshan.net.socket; 
 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.Socket; 
 
/**
* <pre>
* 客户端:发送信息/接收服务器反馈信息
* </pre>
* <hr Color="green" ></hr> 
* 2012 Qingshan Group 版权所有
* <hr Color="green" ></hr> 
* @author  thetopofqingshan
* @version 1.0.0
* @since   JDK 1.5
* @date    2012-4-25
*/ 
public class Client { 
 
    public void run(String ip, int port){ 
        OutputStream os = null; 
        InputStream is = null; 
        try {
            Socket client = new Socket(ip, port);//接连目标ip:192.168.1.114,port:4321
            os = client.getOutputStream();// 
            System.out.println("正在发送信息..."); 
            os.write("发了一条给到没有, 收到了请回复一样的信息".getBytes());//发送信息 
            os.flush();//注意:如果不使用flush方法,服务端将收到客户端发送的信息 
            client.shutdownOutput();
            is = client.getInputStream();// 
            byte[] buf = new byte[1024*8];//缓冲区 
            String msg="";
          
            for(int len=is.read(buf);len>0;len=is.read(buf)){
            msg+=new String(buf, 0, len);
            }
            client.shutdownInput();
            System.out.println("正在接收回复信息..."); 
            System.out.println("服务器返回的信息: "+msg); 
            System.out.println("接收回复信息完成"); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        }finally{ 
            //所有服务 
            try { 
                os.close(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
            try { 
                is.close(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 
    } 
     
    public static void main(String[] args) { 
        Client c=new Client();
        String ip="localhost";
       // ip="www.baidu.com";
       int port=8888;
       //int port=80;
        c.run(ip, port);
    } 


package com.qingshan.net.socket; 
 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.util.concurrent.Executor; 
import java.util.concurrent.Executors; 
 
/**
* <pre>
*  服务器:处理客户端发来的信息, 处理后作为反馈信息返回
* </pre>
* <hr Color="green" ></hr> 
* 2012 Qingshan Group 版权所有
* <hr Color="green" ></hr> 
* @author  thetopofqingshan
* @version 1.0.0
* @since   JDK 1.5
* @date    2012-4-25
*/ 
public class Server { 
    private ServerSocket server; 
    private Socket client; 
 
    public Server() { 
        try { 
            this.server = new ServerSocket(8888);//接收请求的端口 
            System.out.println("服务已启动...."); 
            while (true) { 
                this.client = server.accept();//接收用户请求, 无在此等待, 有开启新的线程响应请求 
                if (client != null) { 
                    //开启接收与处理信息的服务 
                    Executor es = Executors.newCachedThreadPool();//线程池 
                    es.execute(new Recieve(client));//开启新的线程 
                } 
            } 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
 
    /**
     * <pre>
     * 线程:用于接收与处理信息
     * </pre>
     * <hr Color="green" ></hr> 
     * 2012 Qingshan Group 版权所有
     * <hr Color="green" ></hr> 
     * @author  thetopofqingshan
     * @version 1.0.0
     * @since   JDK 1.5
     * @date    2012-4-25
     */ 
    public class Recieve implements Runnable { 
        public Recieve() { 
        } 
 
        public Recieve(Socket cleint) { 
            this.client = cleint; 
        } 
 
        Socket client; 
 
        public void run() { 
            try {
            String response="接收到 socket客户端信息 ";
                System.out.println("正在接收消息..."); 
                InputStream is = client.getInputStream(); 
                String msg = client.getInetAddress().getHostAddress() + ": "; 
                byte[] buf = new byte[1024*8];
                for(int len=is.read(buf);len>0;len=is.read(buf)){
                msg+=new String(buf, 0, len);
                }
                client.shutdownInput();
                System.out.println("客户端消息:"+msg); 
                System.out.println("正在发送信息..."); 
                OutputStream os = client.getOutputStream(); 
                os.write(response.getBytes());//发送信息 
                os.flush(); 
                client.shutdownOutput();
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 
 
    } 
 
    public static void main(String[] args) { 
        new Server(); 
    } 


分享到:
评论

相关推荐

    C# Socket 发送接收文件,消息

    1. **发送消息**: 在C#中,我们可以使用Socket的`Send`方法来发送字符串或字节数据。通常,我们需要先将字符串转换为字节数组,例如通过`Encoding.ASCII.GetBytes`方法。然后,调用`Send`方法并传入这个字节数组。...

    C#Socket局域网发送与接收消息

    客户端则直接用已连接的Socket接收数据。 5. 关闭Socket: 在完成通信后,别忘了关闭Socket,以释放系统资源。 ```csharp socket.Shutdown(SocketShutdown.Both); socket.Close(); ``` 6. 异步操作: 在...

    C#socketUdp异步消息发送接收

    客户端会发送消息,而服务器则接收并回应这些消息。通过查看和分析这些代码,你可以更好地理解上述概念如何在实际应用中工作。 总结,C#中的UDP异步通信结合了`UdpClient`类和异步编程模式,为高效、非阻塞的网络...

    Socket服务端客户端以tcp/ip协议发送接收报文

    本教程将详细讲解如何利用Java Socket实现基于TCP/IP的服务端和客户端之间的报文发送与接收。 TCP(传输控制协议)是一种面向连接、可靠的传输协议,它确保了数据包的有序和无损传输。IP(互联网协议)则是互联网上...

    在VB.NET下利用Socket实现简单的字符串发送接收程序

    Socket编程是网络通信的核心部分,它...理解Socket的基本操作,如连接、发送、接收和关闭,是迈向网络编程的关键步骤。在实际应用中,还需要考虑异常处理、多线程、数据编码和解码等问题,以确保程序的稳定性和可靠性。

    C#使用socket发送和接受数据

    ### C# 使用 Socket 发送与接收数据 #### 知识点概述 在 C# 编程语言中,使用 Socket 进行网络通信是一种常见的技术手段。Socket 是一种用于在网络节点间进行双向通信的协议和机制,它使得不同计算机之间能够通过...

    C#使用Socket发送和接收TCP数据

    在这个例子中,服务器在12345端口监听,客户端连接并发送消息,服务器接收到消息后回应,然后关闭连接。这只是一个基础的交互,实际应用中可能需要处理多线程、异步操作、错误处理等复杂情况。 在VS2010中,可以...

    c# UDP组播的发送和接收(使用socket 类)

    本文将深入探讨如何使用Socket类来实现UDP组播的发送和接收,并且讨论如何指定特定的网络接口进行消息接收。 首先,让我们了解UDP组播的基本概念。组播不同于单播和广播,它允许一个发送者向多个接收者同时发送数据...

    C# Socket 通信接收和发送例子

    客户端创建Socket,连接到服务器,发送消息,然后关闭连接。服务器端则创建监听Socket,等待客户端连接,接收消息,发送回应,最后关闭连接。这样的一个简单交互展示了C# Socket通信的基本流程。 在实际应用中,你...

    c#使用一个socket同时发送字符串和文件

    string message = "Hello, Server!"; byte[] data = Encoding.ASCII.GetBytes(message); socket.Send(data); ``` 这里的`Encoding.ASCII.GetBytes`方法用于将字符串转换为ASCII编码的字节数组。 发送文件则稍微...

    mina 服务器socket客服端发消息

    **ClientHandler**:这个处理器同样继承自`ChannelInboundHandlerAdapter`,重写`channelActive()`方法来发送消息到服务器,`channelRead0()`方法接收服务器的回应。 ```java public class ClientHandler extends ...

    Socket TCP/IP发送接收示例

    string message = Encoding.ASCII.GetString(buffer, 0, received); Console.WriteLine("Received: {0}", message); ``` 5. 关闭连接: 在完成通信后,记得关闭Socket连接。 ```csharp clientSocket.Shutdown...

    SuperSocket服务端与客户端通信实例

    在这个实例中,客户端通过`ConnectAsync`连接到服务端,使用`SendAsync`发送消息,并通过事件处理接收到的消息。 为了实现通信,客户端首先调用`ConnectAsync`建立连接,然后可以随时使用`SendAsync`向服务端发送...

    【Android】socket client发送一个字符串

    String message = "你要发送的字符串"; byte[] bytes = message.getBytes(StandardCharsets.UTF_8); outputStream.write(bytes); outputStream.flush(); outputStream.close(); ``` 4. **接收响应**:同样,...

    socket通信允许发送文字、图片、文件,可指定用户

    string message = Encoding.UTF8.GetString(buffer, 0, received); Console.WriteLine("Received: {0}", message); ``` 在实际应用中,Socket通信会涉及更多细节,如多线程处理、心跳检测、断线重连等。为了保证...

    _Socket_服务端向指定的客户端发送消息_包含服务器

    本篇文章将深入探讨如何使用C#实现Socket服务端向指定客户端发送消息的功能。 首先,理解Socket的基本概念是至关重要的。Socket是操作系统提供的一种进程间通信(IPC)机制,它允许两个网络应用程序通过TCP/IP协议...

    C# Winform Socket 字符串发送 套接字编程 精简程序核心技术

    总的来说,C#的Winform Socket字符串发送程序是一个基础但实用的学习案例,它涵盖了网络通信的基本流程:创建Socket、建立连接、发送和接收数据,以及异常处理。通过理解和实践这个程序,开发者能够更好地理解Socket...

    android 模拟两个手机端 的socket通讯

    Socket在计算机网络中相当于一个出入口,它允许程序发送和接收数据。在TCP/IP协议栈中,Socket分为两种类型:基于TCP(Transmission Control Protocol)的流式Socket和基于UDP(User Datagram Protocol)的 datagram...

    nio socket编程java代码示例,客户端发送消息,服务端接收

    本示例将详细解析如何使用Java的非阻塞I/O(NIO)实现Socket通信,包括客户端发送消息和服务器端接收消息的过程。 首先,理解NIO(Non-blocking Input/Output)的概念至关重要。NIO与传统的IO模型不同,它提供了对...

Global site tag (gtag.js) - Google Analytics