这就是一个简单的socket编程的实例,大道理就不说了,直接上代码,有代码才有真相。具体见代码里的注释。
服务器端:
package com.socket.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class P2PServer {
private ServerSocket server;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public P2PServer() {
try {
try {
// 创建一个ServerSocket在指定端口监听客户请求
server = new ServerSocket(8099);
} catch (Exception e) {
System.out.println("can not listen to:" + e);
}
try {
// 使用accept()阻塞等待客户请求,有客户
socket = server.accept();
// 请求到来则产生一个Socket对象,并继续执行
} catch (IOException e) {
System.out.println("Error." + e);
// 出错,打印出错信息
}
/**
* 接收客户端写入的信息
*/
// 由Socket对象得到输入流,并构造相应的BufferedReader对象
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("from Client:" + in.readLine());
/**
* 将信息输出到客户端
*/
String line = "当然没问题";
System.out.println("from server to Client:" + line);
// 由Socket对象得到输出流,并构造PrintWriter对象
out = new PrintWriter(socket.getOutputStream());
// 向客户端输出该字符串
out.println(line);
// 刷新输出流,使Client马上收到该字符串
out.flush();
out.close(); // 关闭Socket输出流
in.close(); // 关闭Socket输入流
socket.close(); // 关闭Socket
server.close(); // 关闭ServerSocket
} catch (Exception e) {
System.out.println("Error:" + e);
}
}
public static void main(String[] args) {
new P2PServer();
}
}
客户端:
package com.socket.client;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class P2PClient {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public P2PClient() {
try {
// 准备发送给服务器端的信息
String readline="hello ,服务端.我想请求你,可以吗 ";
/**
* 向服务器端发信息
*/
// 向XXX(可以使域名或IP地址,具体参见api)的8099端口发出客户请求
socket = new Socket("localhost", 8099);
// 由Socket对象得到输出流,并构造PrintWriter对象
out = new PrintWriter(socket.getOutputStream());
// 将readline字符串输出到Server
out.println(readline);
// 刷新输出流,使Server马上收到该字符串
out.flush();
/**
* 读取从服务器端返回信息
*/
// 由Socket对象得到输入流,并构造相应的BufferedReader对象
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 从Server读入一字符串,并打印到标准输出上
System.out.println("from Server:" + in.readLine());
out.close(); // 关闭Socket输出流
in.close(); // 关闭Socket输入流
socket.close(); // 关闭Socket
} catch (Exception e) {
System.out.println("Error" + e); // 出错,则打印出错信息
}
}
public static void main(String[] args) {
new P2PClient();
}
}
分享到:
相关推荐
本文将基于提供的博文链接——"C#中一个简单的Socket实例",深入解析C#中的Socket通信,以及如何通过实例代码实现这个过程。 首先,我们需要理解Socket的基本概念。Socket是网络层与传输层之间的接口,它允许应用...
首先,我们先看"server"文件,这是一个简单的服务器端程序。服务器端的主要任务是监听客户端的连接请求,并对连接的客户端发送或接收数据。在C#中,我们首先需要创建一个Socket对象,指定它的地址族(如IPv4)、套接...
在这个C#的实例中,我们探讨了如何使用Socket类创建一个简单的聊天通信程序,包括客户端和服务端的实现。以下是对这个主题的详细解释: 一、Socket基础 Socket是网络通信的一种接口,它提供了一种标准的方法来通过...
【标题】"SOCKET简单聊天实例.rar"是一个用于学习TCP SOCKET编程的基础教程资源,它包含了一个简单的聊天应用程序的源代码,适用于初学者。通过这个实例,开发者可以了解如何使用SOCKET进行网络通信,构建基本的...
以上就是关于Java中的Socket实例的基本知识,通过实践这个实例,你可以更好地理解网络通信的过程,并能够开发自己的网络应用。注意,实际项目中可能需要处理多线程、并发连接、错误重试等复杂情况,这是更高级的话题...
本实例将探讨如何使用C#语言实现一个简单的TCP Socket聊天程序,旨在为初学者提供一个基础的起点。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它确保了数据包在发送过程中的顺序和...
1. 创建一个Socket对象,指定服务器的IP地址和端口号。 2. 打开与Socket关联的输入/输出流,准备进行数据的读写。 3. 通过OutputStream向服务器发送数据。 4. 从InputStream接收服务器返回的数据。 5. 使用完毕后,...
然后使用`socket()`函数创建一个Socket实例,指定协议类型(如TCP或UDP)、地址族(如AF_INET表示IPv4)和套接字类型(如SOCK_STREAM表示TCP)。 3. **服务器端编程**: - **绑定(Bind)**:使用`bind()`函数将...
在IT行业中,网络编程是不可...通过以上知识点,我们可以构建出一个简单的多线程C# socket聊天室。在实际开发中,还可以考虑添加更多的功能,如用户认证、加密传输、消息历史记录等,以增强聊天室的安全性和用户体验。
本教程将通过一个简单的C语言实现的Socket通信实例,讲解如何在VC++6.0环境下进行Socket编程。这个实例包括了服务端和服务端两部分,分别对应压缩包中的"服务端.cpp"和"客户端.cpp"源代码文件。 首先,我们要理解...
以下是一个简单的PHP Socket服务器和客户端示例: #### Server端(netsocket/server.php) ```php $server_socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_bind($server_socket, '127.0.0.1', ...
以下是一个简单的示例: ```java Socket socket = new Socket("服务器IP", 服务器端口); ``` 接着,你可以通过Socket的输入输出流进行数据交换。`OutputStream`用于向服务器发送数据,`InputStream`用于接收服务器...
本篇文章将通过一个具体的 C# Socket 编程实例来详细介绍 Socket 的基本原理及其实现方法。 #### 二、Socket基础概念 在深入了解示例之前,我们先简要回顾一下 Socket 的基础知识: - **Socket**:是一种用于在网络...
- 包含的源码可能包含了一个简单的客户端和服务器端的交互示例,客户端发送消息,服务器端接收并回应。 - 客户端代码通常会创建Socket,连接到服务器,编写发送数据的逻辑,然后关闭连接。 - 服务器端代码则会...
Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,...
在计算机网络中,Socket就像一个通信端口,允许两个应用程序通过网络进行数据交换。在TCP/IP模型中,Socket主要用于应用层与传输层之间的交互,常见的如TCP Socket和UDP Socket,其中TCP提供面向连接、可靠的数据...
本资源名为"C# Socket通信实例",旨在通过一个具体的WinForms应用程序示例,展示如何在客户端和服务器端之间进行数据交换。 Socket在计算机网络中扮演着基础角色,它是应用程序与网络协议栈之间的接口,允许程序员...
- 实例化一个新的Socket对象,指定IP地址族(IPv4或IPv6)、套接字类型(如Stream表示TCP,Dgram表示UDP)以及协议类型。 - 绑定Socket到本地IP地址和端口号,使用Bind方法。 - 开始监听连接请求,使用Listen方法...
1. **创建Socket**:使用`socket()`函数创建一个Socket实例,指定其地址族(如AF_INET)和套接字类型(如SOCK_STREAM或SOCK_DGRAM)。 2. **绑定Socket**:通过`bind()`函数将Socket与一个特定的IP地址和端口号关联...
在实际的代码实现中,客户端通常会创建一个Socket实例,连接到服务端的指定IP和端口,然后通过Socket发送和接收数据。服务端则需要启动一个监听线程,使用TcpListener类来监听指定的端口,当有新的连接请求时,接受...