- 备注:必须先运行服务器端,然后运行客户端
- 1.客户端
- LoginClient.java
- package pb.socket.LoginStr;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.net.Socket;
- import java.net.UnknownHostException;
- public class LoginClient {
- public static void main(String[] args) {
- try {
- //1.建立客户端socket连接,指定服务器位置及端口
- Socket socket =new Socket("localhost",8800);
- //2.得到socket读写流
- OutputStream os=socket.getOutputStream();
- PrintWriter pw=new PrintWriter(os);
- //输入流
- InputStream is=socket.getInputStream();
- BufferedReader br=new BufferedReader(new InputStreamReader(is));
- //3.利用流按照一定的操作,对socket进行读写操作
- String info="用户名:Tom,用户密码:123456";
- pw.write(info);
- pw.flush();
- socket.shutdownOutput();
- //接收服务器的相应
- String reply=null;
- while(!((reply=br.readLine())==null)){
- System.out.println("接收服务器的信息:"+reply);
- }
- //4.关闭资源
- br.close();
- is.close();
- pw.close();
- os.close();
- socket.close();
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- 2.服务器端
- LoginServer.java
- package pb.socket.LoginStr;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class LoginServer {
- public static void main(String[] args) {
- try {
- //1.建立一个服务器Socket(ServerSocket)绑定指定端口
- ServerSocket serverSocket=new ServerSocket(8800);
- //2.使用accept()方法阻止等待监听,获得新连接
- Socket socket=serverSocket.accept();
- //3.获得输入流
- InputStream is=socket.getInputStream();
- BufferedReader br=new BufferedReader(new InputStreamReader(is));
- //获得输出流
- OutputStream os=socket.getOutputStream();
- PrintWriter pw=new PrintWriter(os);
- //4.读取用户输入信息
- String info=null;
- while(!((info=br.readLine())==null)){
- System.out.println("我是服务器,用户信息为:"+info);
- }
- //给客户一个响应
- String reply="welcome";
- pw.write(reply);
- pw.flush();
- //5.关闭资源
- pw.close();
- os.close();
- br.close();
- is.close();
- socket.close();
- serverSocket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
转自:http://blog.csdn.net/qq7342272/article/details/9698413
相关推荐
在这个例子中,我们将探讨如何使用Java Socket进行数据的发送和接收。Socket在Java中被封装在`java.net.Socket`和`java.net.ServerSocket`类中,分别用于客户端和服务器端的通信。 首先,我们从服务器端开始。在...
总结来说,Android客户端通过Socket发送字符串涉及到网络连接、数据传输和异常处理等多个方面。开发者需要对Java的Socket API有一定了解,并注意Android平台特有的网络访问限制。同时,为了保证用户体验,还需要考虑...
在本文中,我们将深入探讨如何使用Java编程语言和用户数据报协议(UDP)来实现字符串的发送和接收。首先,我们需要了解UDP的基本概念。UDP是一种无连接的、不可靠的传输层协议,它不保证数据包的顺序或完整性,但...
本篇文章将详细探讨在`'com.tonystark.android:socket:+'`库的基础上,如何利用Socket来传输字节和字符串。我们将深入理解Socket的工作原理,并探讨如何通过这个特定的库来优化数据传输。 首先,让我们了解Socket的...
java socket处理硬件传过来的16进制数据的工具类,包含大小端转换、byte[]数组转换为16进制的字符串、byte[]转ByteBuffer、16进制字符串转换为byte数组等
Java中Socket通信-服务端和客户端双向传输字符串实现示例代码。在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的...
QT5中的QTcpSocket类提供了方便的方法来发送和接收字符串。发送字符串时,需要将其转换为QByteArray,然后调用write函数。接收数据时,可以先读取QByteArray,再转换回字符串。 ```cpp // 发送字符串 QString str =...
为了解决这个问题,我们需要确保两端在发送和接收数据时使用相同的字符编码。 首先,来看Java客户端的代码示例: ```java import java.net.*; import java.io.*; public class TCPCline { public static void ...
在Java中,Socket通信基于TCP/IP协议栈,提供了稳定的数据传输能力,能够支持多种数据类型如文件、实体类和字符串的发送。本节将深入探讨Socket通信的工作原理、如何发送不同类型的 data以及其在实际项目中的应用。 ...
- 为了正确地解析和显示消息,可能需要定义一种消息格式,比如JSON或自定义的字符串格式,包含发送者、时间戳和消息内容等信息。 8. **状态管理**: - 聊天系统需要跟踪用户登录状态、在线状态等,这可以通过...
每个报文的发送和接收都依赖于`InputStream`和`OutputStream`对象,它们分别用于读取和写入网络数据。在实际应用中,可能需要对报文进行更复杂的编码和解码,例如JSON或XML格式,以便传输更复杂的数据结构。 总结来...
- 创建Socket连接,并启动发送和接收线程。 #### 四、服务端实现详解 ##### 1. 主要类:`Server03` - 定义了一个`ServerSocket`对象用于监听指定端口上的连接请求。 ##### 2. `start()` 方法 - 创建`...
一旦有客户端发起连接,服务端会创建一个Socket实例来处理这个连接,并且可以开始接收和发送数据。在Java中,`ServerSocket`类用于创建服务器端套接字,`accept()`方法用于接受客户端的连接。 客户端(client)程序...
Java和C++之间的Socket通信是跨语言网络编程的一个常见应用场景,尤其在系统集成、设备通讯或者混合编程中。Socket提供了一种基于TCP/IP协议的进程间通信(IPC)方式,可以实现在不同操作系统上的进程之间的数据传输...
接下来,我们将详细讨论如何在Java中发送和接收UDP报文。 一、发送UDP报文 发送UDP报文主要涉及以下几个步骤: 1. **创建DatagramSocket**:首先,我们需要创建一个`DatagramSocket`实例,这将代表我们的UDP...
每个新连接的客户端都会启动一个新的线程,这样服务器可以同时处理多个用户的消息发送和接收,保证了系统的高并发性能。Java中的Thread类和Runnable接口是实现多线程的核心,可以通过继承Thread或实现Runnable接口来...
发送和接收的数据需要通过合适的编码和解码方式来保证正确性。 6. **异常处理**: 网络通信过程中可能会遇到各种异常,如连接中断、数据传输错误等,因此程序需要有良好的异常处理机制,以保证服务的稳定性和用户...
格式通常是"client IP, proxy 1 IP, proxy 2 IP",所以我们需要处理这个字符串,获取第一个IP作为真实客户端IP。 ```java if (clientIp.contains(",")) { clientIp = clientIp.split(",")[0].trim(); } ``` 3. **...
- 双方通过输入输出流交换数据,例如字符串。 - 使用Swing更新界面,显示接收到的数据。 - 关闭流和Socket,结束通信。 6. **注意事项**:在实际应用中,要处理异常情况,确保资源的正确关闭,防止内存泄漏。...
Socket是网络编程的基本接口,允许应用程序通过网络发送和接收数据。以下是关于"Java和C#之间基于Socket的通信"的详细知识点: 1. **Socket概念**: - Socket,也称为套接字,是网络编程中的一个抽象概念,用于...