package com.ct.server; import java.net.ServerSocket; import java.net.Socket; /** * @author Chalmers * @version 创建时间:2015年12月14日 下午7:14:14 */ /** * 网络通信服务端,运行程序,等待客户端的连接 */ /** * 在服务端中,只需要指定端口,表示该端口已经被该程序占用 而不需要写网址,因为服务端在此电脑上,可以通过电脑ip和服务端端口来连接该程序 */ public class MyServer { public static void main(String[] args) { ServerSocket server = null; Socket socket = null; try { // 建立一个ServerSocket对象 // 数字表示服务端占用的端口 // 端口范围为0~65535 /* *创建服务器对象的时候是不需要使用地址的,这个与客户端对象的创建不同。 */ server = new ServerSocket(9090); while (true) { System.out.println("服务器已经启动,在9090端口正在等待连接~~~"); // 开始等待客户端的连接 // 如果有客户端连上,就会接收到客户端套接字对象 // 如果没有,则等待 socket = server.accept(); //线程,可以用多个客户端连接服务端 ClientThread ct = new ClientThread(socket); ct.start(); } } catch (Exception e) { e.printStackTrace(); } } }
package com.ct.server; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.SocketAddress; /** * @author Chalmers * @version 创建时间:2015年12月14日 下午8:49:32 */ public class ClientThread extends Thread { private Socket socket; //服务器 public ClientThread(Socket socket) { this.socket = socket; } @Override public void run() { super.run(); try { // 获得远程客户端地址 // 如果此行代码在服务端写,则获得客户端地址 // 如果在客户端写,则获得服务端地址 SocketAddress addr = socket.getRemoteSocketAddress(); // 获取本地服务器地址 // 与上面相反 // SocketAddress addr2 = socket.getLocalSocketAddress(); System.out.println("连上一个客户端: " + addr); // System.out.println("客户端: " + addr2); // 通过socket对象获得输出流 OutputStream os = socket.getOutputStream(); // 包装成字符流 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); // 向客户端写数据 String msg = "Hello Boy!\n"; bw.write(msg); //注意要写 bw.flush(); // 通过socket获得输入流 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); while (true) { // 读取一行数据 msg = br.readLine(); //写这个是想让服务端正常退出 // if (msg == null) { // break; // } System.out.println("客户端发送的数据: " + msg); } } catch (Exception e) { e.printStackTrace(); } } }
因为要测试多个客户端的连接,所以用了线程。
服务端写好了,但没写客户端,该如何验证呢??
可以用下面的方法:
启动cmd后,输入 telnet 127.0.0.1 9090(你设置的服务端的端口号)。
如果telnet不能打开怎么办??
我的是win8系统,所以就讲解win8的做法,其他操作系统也差不太多。
我的电脑-->属性-->控制面板主页-->程序和功能-->启用或关闭windows功能-->选择开启Telnet客户端功能 就好了。
测试时,我启动了两个客户端,截图如下
所以便可验证服务端编写完成。
相关推荐
2. **服务端编写**: UDP服务端一般需要监听特定的端口,等待客户端的连接。当接收到数据时,服务端会通过`recvfrom()`函数获取数据,并可使用`sendto()`将响应数据返回给客户端。在`udpserver1.c`、`udpserver3.c`...
本资源“TCP.rar”包含了一份使用Java实现的TCP服务端和客户端的代码示例,以及一个可能包含额外信息的文本文件“www.pudn.com.txt”。 首先,让我们深入了解一下TCP协议。TCP是一种面向连接的协议,意味着在数据...
本项目聚焦于TCP协议下的异步通信实现,包括TCP服务端和TCP客户端的异步操作,这对于构建高性能、高并发的网络应用非常关键。 首先,TCP服务端是接收并处理客户端连接请求的程序。当一个TCP服务端启动后,它会在...
接下来,我们将探讨如何在Linux环境下设置TCP服务端。服务端需要监听特定的端口,等待客户端的连接请求。在Linux中,通常使用`nc`(netcat)工具来创建TCP服务器。例如,启动一个监听5000端口的服务器: ```bash nc...
5. **自由连接服务端**:客户端可以自由指定要连接的服务端地址(IP和端口号),这允许它与任何可访问的TCP服务端建立连接,增强了程序的灵活性。 6. **Socks TCP**:SOCKS是一种网络协议,常用于代理服务器,允许...
本篇将详细讲解标题为"tcpS.rar_VC TCP服务端_vc tcp 服务"的源代码所涉及的知识点。 首先,该压缩包内容是一个使用Microsoft Visual C++(简称VC)编写的TCP服务器端程序。VC++是微软推出的一种强大的C++集成开发...
在标题中提到的"服务器_socket_delphi源码_服务端源码",这通常指的是一个使用Delphi编写的服务器端程序,该程序利用Socket API来监听和处理来自客户端的连接请求。在Delphi中,我们可以创建一个TIdServer或...
本文将详细解析使用C#语言编写的TCP socket服务端代码,特别是针对GPRS(General Packet Radio Service)环境的服务端测试程序。 首先,TCP是一种面向连接的、可靠的传输协议,它确保了数据的顺序传输和无丢失特性...
通过使用C++在Linux环境下编写TCP套接字(TCP_socket)程序,我们可以深入理解TCP的工作原理以及如何在实际应用中实现它。 TCP协议的核心特性包括: 1. 面向连接:在数据传输前,TCP需要建立连接,即著名的三次...
总之,"TCP_socket.zip_c linux socket_client.c_linux tcp client_socket_s"这个压缩包中的代码和头文件展示了如何在Linux环境下使用C语言编写TCP客户端和服务端程序。通过理解这些基本概念和技术,开发者可以构建...
本压缩包文件"TCP-socket.zip"包含了一个基于Java实现的TCP Socket通信客户端和服务端,且支持多线程并发连接。这个学习资源可以帮助我们深入了解Java中的TCP Socket编程和多线程技术。 首先,让我们来看看TCP协议...
TCP服务端与客户端是网络通信中的两个关键角色,它们之间的交互构成了TCP通信的基础。 在TCP服务端,主要涉及到以下几个知识点: 1. **监听与绑定**:服务器首先需要开启一个特定的端口,进行监听。通过调用`...
描述中的"用VB实现客户——服务器(TCP/IP)编程实例"揭示了这是一个实际操作的教程,它将展示如何使用VB编写TCP/IP协议的客户端和服务器程序。TCP/IP是互联网上最基础的通信协议,它定义了数据在网络中的传输方式。...
在本项目中,"VS2013 C++ MFC, Socket, TCP服务端, 多个客户端通信",我们探讨的是如何使用Microsoft Visual Studio 2013中的MFC(Microsoft Foundation Classes)库,结合Socket编程技术,来实现一个TCP...
今天与大家分享一个VC TCP服务端程序的编写实例,运行TCP/UDP的原理实现的一个服务端的程序示例,帮且VC 初学者了解网络的基本原理,测试时候可以选择是使用TCP或是UDP协议,虽然简单,不过可以向大家展示不少的网络...
本教程将深入探讨如何使用C#语言编写原生的TCP Socket客户端和服务端程序。TCP是一种面向连接的、可靠的传输协议,而Socket是TCP/IP协议族中用于进程间通信的接口。下面我们将详细讲解这两个方面的知识。 首先,...
在Android平台上实现TCP服务端代码是一项关键的技术任务,特别是在应对Android 7.0及以上版本的数据发送挑战时。TCP(Transmission Control Protocol)是一种面向连接、可靠的传输协议,广泛应用于网络通信中,包括...
在多线程环境下,TCP Socket可以同时处理多个客户端连接,提高服务端的并发性能。 无阻塞Socket是通过设置Socket为非阻塞模式实现的,使用`fcntl()`或`ioctl()`函数可以改变Socket的阻塞状态。在非阻塞模式下,如果...
8. **编程实现**:在C语言中编写FTP服务端需要理解TCP套接字编程,包括socket API的使用,如socket()、bind()、listen()、accept()、send()和recv()等函数。 9. **配置与管理**:FTP服务端的配置文件通常包含各种...
该函数接受三个参数:协议族(如AF_INET代表IPv4)、socket类型(如SOCK_STREAM代表TCP,SOCK_DGRAM代表UDP)和协议(通常是0,由系统自动选择)。 ```c int socket_desc = socket(AF_INET, SOCK_STREAM, 0); ``...