1. 服务端程序
package com.test; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class TalkServer{ public static void main(String[] args) { try { ServerSocket server=null; try { server=new ServerSocket(4700); // 创建一个ServerSocket在端口4700监听客户请求 } catch (Exception e) { System.out.println("can not listen to:"+e); // 出错,打印出错信息 } Socket socket=null; try { socket=server.accept(); // 使用accept()阻塞等待客户请求,有客户 // 请求到来则产生一个Socket对象,并继续执行 } catch (Exception e) { System.out.println("Error."+e); // 出错,打印出错信息 } String line; BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); // 由Socket对象得到输入流,并构造相应的BufferedReader对象 PrintWriter os=new PrintWriter(socket.getOutputStream()); // 由Socket对象得到输出流,并构造PrintWriter对象 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); // 由系统标准输入设备构造BufferedReader对象 System.out.println("Client:"+is.readLine()); // 在标准输出上打印从客户端读入的字符串 line=sin.readLine(); // 从标准输入读入一字符串 while(!line.equals("bye")){ // 如果该字符串为 "bye",则停止循环 os.println(line); // 向客户端输出该字符串 os.flush(); // 刷新输出流,使Client马上收到该字符串 System.out.println("Server:"+line); // 在系统标准输出上打印读入的字符串 System.out.println("Client:"+is.readLine()); // 从Client读入一字符串,并打印到标准输出上 line=sin.readLine(); // 从系统标准输入读入一字符串 // 继续循环 } os.close(); // 关闭Socket输出流 is.close(); // 关闭Socket输入流 socket.close(); // 关闭Socket server.close(); // 关闭ServerSocket } catch (Exception e) { System.out.println("Error:"+e); // 出错,打印出错信息 } } }
2. 客户端程序
package com.test; import java.io.*; import java.net.*; public class TalkClient { public static void main(String args[]) { try { Socket socket = new Socket("127.0.0.1", 4700); // 向本机的4700端口发出客户请求 BufferedReader sin = new BufferedReader(new InputStreamReader( System.in)); // 由系统标准输入设备构造BufferedReader对象 PrintWriter os = new PrintWriter(socket.getOutputStream()); // 由Socket对象得到输出流,并构造PrintWriter对象 BufferedReader is = new BufferedReader(new InputStreamReader(socket .getInputStream())); // 由Socket对象得到输入流,并构造相应的BufferedReader对象 String readline; readline = sin.readLine(); // 从系统标准输入读入一字符串 while (!readline.equals("bye")) { // 若从标准输入读入的字符串为 "bye"则停止循环 os.println(readline); // 将从系统标准输入读入的字符串输出到Server os.flush(); // 刷新输出流,使Server马上收到该字符串 System.out.println("Client:" + readline); // 在系统标准输出上打印读入的字符串 System.out.println("Server:" + is.readLine()); // 从Server读入一字符串,并打印到标准输出上 readline = sin.readLine(); // 从系统标准输入读入一字符串 } // 继续循环 os.close(); // 关闭Socket输出流 is.close(); // 关闭Socket输入流 socket.close(); //关闭Socket } catch (Exception e) { System.out.println("Error" + e); //出错,则打印出错信息 } } }
相关推荐
在提供的"TestSocket"文件中,可能包含了一个简单的Socket通信实例,可能包括了客户端和服务器的代码。客户端代码通常会包含创建Socket、连接服务器、发送数据和关闭Socket的过程。服务器端则涉及创建Socket、绑定...
Socket编程是计算机网络通信中的重要概念,特别是在Android应用开发中,它允许设备通过TCP/IP协议进行数据传输。...通过学习这个例子,开发者能够掌握基本的Socket通信技巧,为进一步的Android网络编程打下坚实的基础。
Socket网络编程是计算机科学中的一个重要领域,特别是在分布式系统和互联网应用程序中。..."Socket网络编程例子程序"是一个宝贵的教育资源,对于想要深入学习这一领域的开发者来说,它提供了实践和探索的平台。
C#中的异步Socket通信主要依赖两个关键方法:`BeginConnect`和`EndConnect`用于建立连接,`BeginSend`和`EndSend`用于发送数据,以及`BeginReceive`和`EndReceive`用于接收数据。 1. **建立异步连接** 使用`...
- **Socket编程实例.doc**: 这个文档应该包含了完整的Socket通信代码示例,从初始化到数据传输的全过程,可能还包含了错误处理和调试技巧。 - **SOCKADDR_IN.txt**: `SOCKADDR_IN`结构体定义了IPv4地址和端口号,...
"多线程Socket阻塞模式下通信的例子.rar"可能包含如何在Java或C#中实现多线程处理Socket通信的代码。 6. **Socket应用实例**: - "socket应用小例程.rar"和"Socket开发资料.rar"可能包含了各种Socket编程的实用...
"VC SOCKET通信小例子"是一个实用的学习资源,它演示了如何在VC中实现客户端和服务端之间的数据传输。 SOCKET是Berkeley软件套件的一部分,它为开发者提供了低级别的网络通信接口。在Windows中,这个接口被封装到了...
Socket编程是计算机网络编程中的重要组成部分,主要用于实现进程间的通信,尤其在网络环境中,它提供了不同计算机间进程数据传输的桥梁。本资料集包含了Socket编程的一些经典实例源码,旨在帮助开发者深入理解和应用...
在这个“iPhone Socket通信例子”中,我们将探讨如何在iOS(iPhone)平台上利用Socket进行数据传输,以及与Mac平台上的服务端进行交互。首先,我们需要理解Socket的基本概念。 Socket,又称为套接字,是网络通信的...
在`Socket编程例子_MFC`这个压缩包中,可能包含了一个简单的C/S程序示例,展示了如何在MFC工程中集成Socket通信。可能包含客户端的`.cpp`和`.h`文件,以及服务器端的相应文件。代码中可能使用了`CSocket`类及其派生...
在这个“最基本的Socket编程例子”中,我们将深入理解Socket的基本概念、工作原理以及如何在实际编程中应用。 Socket,通常被称为套接字,是操作系统提供的一个接口,用于网络上的进程间通信。在网络编程中,Socket...
通过这个入门例子,初学者可以理解Java Socket编程的基本原理和操作步骤,为进一步的网络编程打下坚实的基础。实际开发中,还可以结合NIO(非阻塞I/O)或其他高级框架如Netty,提高网络通信的效率和灵活性。
本示例将探讨"C# Socket通信协议小例子",帮助开发者理解如何在C#中使用Socket进行网络编程。 Socket,通常被称为套接字,是网络编程中的基本组件,它允许应用程序通过网络发送和接收数据。在C#中,Socket类位于...
通过运行这两个程序,初学者可以在本地环境中体验Socket通信的过程。 通过深入学习和实践,开发者可以进一步了解多线程Socket编程、异步通信、安全套接层(SSL/TLS)支持以及更复杂的应用场景,如聊天应用、文件...
为了在DLL中封装Socket通信,我们需要定义一个或多个函数接口,这些接口将执行Socket相关的任务,如创建Socket、连接服务器、发送数据和接收数据。 例如,我们可以定义以下DLL中的函数: 1. `int ...
总之,C++ Socket编程实例为我们展示了如何在C++中建立网络通信,它包括了服务器的监听、连接处理和数据交换,以及客户端的连接、数据发送和接收。通过学习和实践这些基本概念,开发者可以创建自己的网络应用,如...
"vc有关SOCKET编程例子"这个标题表明我们将探讨如何在VC环境中利用SOCKET API进行网络通信。 首先,SOCKET在C++编程中是一个结构体,它封装了网络通信所需的所有信息,如IP地址、端口号等。在VC中,我们可以使用...
标题"Qt UdpSocket通信小例子"暗示我们将学习如何使用Qt中的QUdpSocket类创建一个简单的UDP通信应用。QUdpSocket允许我们发送和接收UDP数据报,是实现UDP通信的基础。 首先,我们需要了解QUdpSocket的基本用法。...