`

socket发送和接受数据

    博客分类:
  • java
阅读更多
import java.net.*;
import java.io.*;

public class MyConnection2
{
    public static void main(String[] args) throws Exception
    {
        Socket socket = new Socket("www.ptpress.com.cn", 80);
        // 向服务端程序发送数据
        OutputStream ops  = socket.getOutputStream();        
        OutputStreamWriter opsw = new OutputStreamWriter(ops);
        BufferedWriter bw = new BufferedWriter(opsw);
        
        bw.write("hello world\r\n\r\n");
        bw.flush();
        
        // 从服务端程序接收数据
        InputStream ips = socket.getInputStream();
        InputStreamReader ipsr = new InputStreamReader(ips);
        BufferedReader br = new BufferedReader(ipsr);
        String s = "";        
        while((s = br.readLine()) != null)
            System.out.println(s);        
        socket.close();
    }
}

在编写上面代码时要注意如下两点:

1. 为了提高数据传输的效率,Socket类并没有在每次调用write方法后都进行数据传输,而是将这些要传输的数据写到一个缓冲区里(默认是8192个字节),然后通过flush方法将这个缓冲区里的数据一起发送出去,因此,bw.flush();是必须的。

2. 在发送字符串时之所以在Hello World后加上 “\r\n\r\n”,这是因为HTTP协议头是以“\r\n\r\n”作为结束标志(HTTP协议的详细内容将在以后讲解),因此,通过在发送字符串后加入“\r\n\r\n”,可以使服务端程序认为HTTP头已经结束,可以处理了。如果不加“\r\n\r\n”,那么服务端程序将一直等待HTTP头的结束,也就是“\r\n\r\n”。如果是这样,服务端程序就不会向客户端发送响应信息,而br.readLine()将因无法读以响应信息面被阻塞,直到连接超时。
分享到:
评论

相关推荐

    利用socket连续发送与连续接收数据

    本文将深入探讨如何利用Socket进行连续发送与连续接收数据,基于标题“利用socket连续发送与连续接收数据”以及描述中提到的实现过程。 首先,让我们理解什么是Socket。Socket是进程间通信的一种方式,它提供了一种...

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

    本篇文章将深入探讨如何在C#中使用Socket类来实现TCP数据的发送和接收。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它确保了数据包的顺序传输和错误校验。在C#中,Socket类是.NET ...

    Socket 发送 接收 数据 c#

    本文将深入探讨如何使用C#进行Socket发送和接收数据。 首先,Socket是网络通信的基础组件,它提供了进程间的网络通信能力。在C#中,`System.Net.Sockets`命名空间包含了Socket相关的类,如`Socket`类,它是实现TCP/...

    C# socket发送(接收)文件

    - 接收文件时,需要不断接收数据,直到接收到文件结束标识。可以使用`Receive()`方法或`BeginReceive()`/`EndReceive()`异步方法,接收的数据存入缓冲区,然后写入文件。 4. **错误处理和连接关闭** 在发送和接收...

    C#用Socket发送和接收文件的源代码

    3. **接收数据**:使用新连接的Socket的Receive方法接收客户端发送的数据块。 4. **写入文件**:将接收到的数据块写入本地文件,直到所有数据接收完毕。 5. **关闭连接**:传输完成后,关闭Socket连接。 在...

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

    - 一旦连接建立,就可以通过Socket的Send和Receive方法发送和接收数据。 以下是简单的C#代码示例: **服务器端(Listen.cs)** ```csharp using System; using System.Net; using System.Net.Sockets; class ...

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

    接收文件的过程与发送类似,但需要持续接收数据,直到文件完整。每次调用`Receive`方法接收一部分数据,然后写入文件。同时,可能需要跟踪已接收的字节数,以便知道何时完成接收。 5. **服务器下发文件**: 当...

    java使用Socket类接收和发送数据

    3. **接收数据** - 获取输入流:同样,通过`Socket`的`getInputStream()`方法获取一个`InputStream`,然后利用`DataInputStream`或`BufferedReader`等类读取服务器返回的数据。 ```java InputStream inputStream ...

    Socket发送并接收服务器返回的数据

    综上所述,Android应用利用Socket进行数据发送与接收主要涉及建立连接、发送数据、接收数据以及异常处理和资源关闭等步骤。在实际项目中,可能还需要考虑多线程、心跳机制、数据加密等问题,以提高网络通信的安全性...

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

    连接成功后,我们可以通过Socket的Send和Receive方法发送和接收数据。注意,由于TCP是字节流协议,因此在实际应用中通常需要定义自己的数据协议格式,如JSON、XML或自定义二进制格式,以便正确解析接收到的数据。 ...

    基于raw socket的UDP数据的发送和接收

    在接收端,同样需要创建并绑定Raw Socket,然后使用`recvfrom()`函数接收数据。由于Raw Socket不区分具体的协议,所以需要在接收端解析接收到的数据,判断其是否为UDP数据包,然后提取出头部信息和数据内容。 需要...

    VC Socket发送与接收通讯小程序

    6. **接收数据**:调用Receive函数从Socket接收数据,通常需要循环接收,直到所有数据接收完毕。 7. **关闭连接**:完成通信后,调用Close函数关闭Socket。 **项目文件解析:** - `atmhost.aps` 和 `atmhost.clw` ...

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

    通过上述代码示例和解析,我们可以了解到在 C# 中使用 Socket 进行网络通信的基本流程,包括创建 Socket 对象、绑定地址、监听连接、接受连接、发送和接收数据以及关闭 Socket 等步骤。这些步骤是构建网络应用程序的...

    Java Socket发送和接收的例子

    // 接收数据 String response = in.readLine(); System.out.println("Server replied: " + response); // 关闭连接 socket.close(); } } ``` 客户端通过`Socket`的`getInputStream()`和`getOutputStream()`...

    Android开发,Socket Client端和Socket Server端数据发送和接收

    本篇文章将详细探讨Android环境下如何进行Socket Client端和Socket Server端的数据发送与接收。 1. **Socket基础知识** - **Socket定义**:Socket是网络编程中的一个接口,它允许应用程序通过TCP/IP协议进行数据...

    C#使用Socket实现发送和接收图片的方法

    3. **接收数据**:使用`Socket.Receive`接收服务器发送的数据。 4. **保存图片**:将接收到的字节数组写入文件,以保存图片。 在客户端的`Main`方法中,接收图片的代码可能类似于: ```csharp byte[] receivedData...

    Socket编程的发送接收消息函数

    参数含义与send类似,但recv在接收数据时的行为有所不同。recv会等待发送缓冲中的数据被协议完全发送,如果在此期间出现网络错误,recv会返回`SOCKET_ERROR`。当发送缓冲为空或数据发送完毕,recv会检查接收缓冲区。...

    socket服务和客户端测试XML文件接收和发送

    在本案例中,XML文件会被序列化为字节流,然后通过Socket发送。接收端则反序列化接收到的字节流回XML文档。 4. **客户端**:客户端是主动发起连接请求的程序。在C#中,客户端首先创建一个Socket实例,然后使用`...

    ABB机器人与S7-1200PLC通过Socket实现位置坐标数据发送和接收的具体方法.docx

    本文主要探讨如何通过Socket通信协议实现两者之间的位置坐标数据的发送和接收,这对于实现远程控制和自动化生产流程优化至关重要。 首先,我们要理解Socket通信的基本原理。Socket是一种网络通信接口,它允许不同...

    SocketTool SocketTool socket发送接收数据

    SocketTool SocketTool socket发送接收数据

Global site tag (gtag.js) - Google Analytics