`
chenfengcn
  • 浏览: 118403 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

一个最简单的Socket通信例子

阅读更多
    所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
    Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
    下面给出一个最简单的Socket通信的例子供初学者参考:
服务器端:ServerDemo.java
package com.lanber.socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {

	/**
	 * 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,
	 *      而后才可以向客户端发送信息,否则将会有运行时出错。
	 * @param args
	 */
	public static void main(String[] args) {
		ServerSocket ss = null;
		try {
			ss = new ServerSocket(8888);
			//服务器接收到客户端的数据后,创建与此客户端对话的Socket
			Socket socket = ss.accept();
			//用于向客户端发送数据的输出流
			DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
			//用于接收客户端发来的数据的输入流
			DataInputStream dis = new DataInputStream(socket.getInputStream());
			System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());
			//服务器向客户端发送连接成功确认信息
			dos.writeUTF("接受连接请求,连接成功!");
			//不需要继续使用此连接时,关闭连接
			socket.close();
			ss.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

客户端:ClientDemo.java
package com.lanber.socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Socket socket = null;
		try {
			socket = new Socket("localhost",8888);
			//获取输出流,用于客户端向服务器端发送数据
			DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
			//获取输入流,用于接收服务器端发送来的数据
			DataInputStream dis = new DataInputStream(socket.getInputStream());
			//客户端向服务器端发送数据
			dos.writeUTF("我是客户端,请求连接!");
			//打印出从服务器端接收到的数据
			System.out.println(dis.readUTF());
			//不需要继续使用此连接时,记得关闭哦
			socket.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
2
0
分享到:
评论

相关推荐

    最简单的socket通信例子

    本文将详细解析标题为“最简单的socket通信例子”的Java Socket编程实例,帮助初学者理解如何实现客户端-服务器之间的通信。 首先,我们要明白Socket在计算机网络中的作用。Socket是网络通信的基本单元,它提供了...

    Socket编程例子

    在提供的"TestSocket"文件中,可能包含了一个简单的Socket通信实例,可能包括了客户端和服务器的代码。客户端代码通常会包含创建Socket、连接服务器、发送数据和关闭Socket的过程。服务器端则涉及创建Socket、绑定...

    基于socket简单通信协议实现

    UDP Socket通信则相对简单,无需建立连接,直接发送数据包。虽然速度快,但不保证数据的顺序和可靠性,适合对实时性要求高的应用场景,如视频流传输。 五、协议实现 通信协议是Socket通信的基础,它可以是自定义的...

    C/C++ socket最简单的例子

    以上就是一个简单的C/C++ socket通信的例子,适合初学者入门。在实际项目中,可能需要处理多客户端连接、错误处理、线程同步等问题,这需要更深入的学习和实践。使用VS2005这样的IDE可以方便地调试和运行代码,对于...

    Qt学习 之 Socket通信(世界上最简单的例子了) - imxiangzi的专栏 - CSDN博客1

    在本文中,我们将探讨Qt库中的Socket通信,特别关注TCP和UDP协议的简单实现。Qt为开发者提供了方便的类库,使得网络编程变得更加简洁和直观,尤其适合那些不熟悉底层网络编程的初学者。 首先,让我们简要介绍一下...

    C# Socket tcp 最简单例子源码

    本示例将深入解析"C# Socket tcp 最简单例子源码",帮助你理解如何在C#中实现TCP(传输控制协议)客户端和服务端的通信。 首先,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它确保数据包按顺序无损...

    最简单的双机通信例子vb

    在这个"最简单的双机通信例子vb"中,我们将探讨如何使用VB和Winsock来构建一个简单的客户端-服务器架构。 首先,我们来看服务器端的实现。在VB中创建一个新的工程,添加一个Winsock控件到窗体上,通常命名为`...

    最基本的Socket编程例子

    6. **接受连接**:当有客户端请求连接时,服务器使用`accept()`函数接收连接请求并创建一个新的Socket用于与客户端通信。例如:`int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);` 7. **发送和...

    一个最简洁的Socket例子.rar

    在这个“一个最简洁的Socket例子.rar”压缩包中,我们很可能是找到了一个简单的Java Socket编程示例。尽管没有具体的标签,我们可以从文件名推测,这个示例可能包含了图片(endo_Socket.gif)来辅助理解Socket的工作...

    vc有关SOCKET编程例子

    总的来说,"vc有关SOCKET编程例子"是一个实用的学习资源,它涵盖了网络通信的基础知识,帮助开发者理解和实现基于SOCKET的网络应用。无论是创建简单的聊天程序,还是复杂的文件传输服务,理解并掌握SOCKET编程都是至...

    socket通信专题报告

    以下是一个简单的Socket通信示例(以TCP为例): ```python import socket # 创建Socket对象 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 server_address = ('localhost', ...

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

    这样的一个简单交互展示了C# Socket通信的基本流程。 在实际应用中,你可能需要处理更复杂的网络状况,例如异常处理、多线程、异步操作等。C#的Socket类也提供了相应的支持,如BeginSend/EndSend和BeginReceive/...

    socket实现通信

    在这个"socket实现通信"的例子中,开发者构建了一个基于GUI(图形用户界面)的简单应用,可能包含数据库连接功能,用于展示Socket通信的基本原理和实践。 首先,我们来理解Socket。Socket可以被看作是两个网络节点...

    有关Java的Socket编程入门例子

    通过`new Socket(InetAddress address, int port)`构造方法,我们可以创建一个Socket实例并连接到指定服务器的特定端口。 2. **ServerSocket类**: - ServerSocket是Java服务器端的组件,用于监听来自客户端的连接...

    最简单J2ME与J2SE的SOCKET链接例子,一看就懂

    以下是一个简单的J2ME客户端示例: ```java import javax.microedition.io.Connector; import javax.microedition.io.StreamConnection; public class J2MEClient { public static void main(String[] args) { ...

    C#Socket文件传输简单例子(将文件名和文件同时传输)

    在C#编程中,Socket是网络通信的基本组件,它提供了进程间、网络间的数据传输能力。本示例主要探讨如何使用C#的Socket类进行文件的传输,包括文件名和文件...通过实际操作,你会更深入地掌握C# Socket通信的核心技巧。

    C# socket 简单例子 初学做的

    2. **IP地址与端口号**: 每个Socket都与一个特定的IP地址和端口号关联,用于在网络中定位和识别通信的双方。 ### 使用场景 1. **客户端-服务器通信**: 这是最常见的Socket应用,如浏览器与Web服务器之间的交互。 2....

    Winform(Socket例子)

    总结一下,"Winform(Socket例子)"是一个展示如何在C# Winform应用中使用Socket通信的例子。开发者使用VS2012创建了一个TCP Socket服务器,它接受客户端连接,读取并回应消息。客户端则连接到服务器,发送数据并接收...

    最简单的Socket链接

    在Java中,Socket类和ServerSocket类是实现Socket通信的核心类。 在标题提及的场景中,我们有两个主要的角色:服务端(Server)和客户端(Client)。服务端通过创建ServerSocket监听特定的端口,等待客户端的连接...

Global site tag (gtag.js) - Google Analytics