`
MoonMonster
  • 浏览: 36581 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Socket_TCP 服务端编写

    博客分类:
  • Java
 
阅读更多
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客户端功能   就好了。

 

测试时,我启动了两个客户端,截图如下

 


 

所以便可验证服务端编写完成。

 

 


 

  • 大小: 30.2 KB
2
2
分享到:
评论

相关推荐

    udp.rar_linux_socket_udp服务端编写_原始套接字udp

    2. **服务端编写**: UDP服务端一般需要监听特定的端口,等待客户端的连接。当接收到数据时,服务端会通过`recvfrom()`函数获取数据,并可使用`sendto()`将响应数据返回给客户端。在`udpserver1.c`、`udpserver3.c`...

    TCP.rar_java Tcp _tcp_tcp服务端 java_tcp演示

    本资源“TCP.rar”包含了一份使用Java实现的TCP服务端和客户端的代码示例,以及一个可能包含额外信息的文本文件“www.pudn.com.txt”。 首先,让我们深入了解一下TCP协议。TCP是一种面向连接的协议,意味着在数据...

    tc.zip_TCP 服务端_TCP客户端异步_tcp 异步

    本项目聚焦于TCP协议下的异步通信实现,包括TCP服务端和TCP客户端的异步操作,这对于构建高性能、高并发的网络应用非常关键。 首先,TCP服务端是接收并处理客户端连接请求的程序。当一个TCP服务端启动后,它会在...

    tcp.rar_TCP通信_tcp服务端_远程控制

    接下来,我们将探讨如何在Linux环境下设置TCP服务端。服务端需要监听特定的端口,等待客户端的连接请求。在Linux中,通常使用`nc`(netcat)工具来创建TCP服务器。例如,启动一个监听5000端口的服务器: ```bash nc...

    TCp.rar_Linux服务端_TCP客户端_linux tcp 客户端_socks_tcp 多线程

    5. **自由连接服务端**:客户端可以自由指定要连接的服务端地址(IP和端口号),这允许它与任何可访问的TCP服务端建立连接,增强了程序的灵活性。 6. **Socks TCP**:SOCKS是一种网络协议,常用于代理服务器,允许...

    tcpS.rar_VC TCP服务端_vc tcp 服务

    本篇将详细讲解标题为"tcpS.rar_VC TCP服务端_vc tcp 服务"的源代码所涉及的知识点。 首先,该压缩包内容是一个使用Microsoft Visual C++(简称VC)编写的TCP服务器端程序。VC++是微软推出的一种强大的C++集成开发...

    服务器_socket_delphi源码_服务端源码_

    在标题中提到的"服务器_socket_delphi源码_服务端源码",这通常指的是一个使用Delphi编写的服务器端程序,该程序利用Socket API来监听和处理来自客户端的连接请求。在Delphi中,我们可以创建一个TIdServer或...

    TCP socket服务端代码 C#

    本文将详细解析使用C#语言编写的TCP socket服务端代码,特别是针对GPRS(General Packet Radio Service)环境的服务端测试程序。 首先,TCP是一种面向连接的、可靠的传输协议,它确保了数据的顺序传输和无丢失特性...

    TCP.rar_linux C++ TCP_socket_tcp

    通过使用C++在Linux环境下编写TCP套接字(TCP_socket)程序,我们可以深入理解TCP的工作原理以及如何在实际应用中实现它。 TCP协议的核心特性包括: 1. 面向连接:在数据传输前,TCP需要建立连接,即著名的三次...

    TCP_socket.zip_c linux socket_client.c_linux tcp client_socket_s

    总之,"TCP_socket.zip_c linux socket_client.c_linux tcp client_socket_s"这个压缩包中的代码和头文件展示了如何在Linux环境下使用C语言编写TCP客户端和服务端程序。通过理解这些基本概念和技术,开发者可以构建...

    TCP-socket.zip_java_java Tcp _java socket _socket_socket多线程

    本压缩包文件"TCP-socket.zip"包含了一个基于Java实现的TCP Socket通信客户端和服务端,且支持多线程并发连接。这个学习资源可以帮助我们深入了解Java中的TCP Socket编程和多线程技术。 首先,让我们来看看TCP协议...

    tcp服务端&客户端模拟器

    TCP服务端与客户端是网络通信中的两个关键角色,它们之间的交互构成了TCP通信的基础。 在TCP服务端,主要涉及到以下几个知识点: 1. **监听与绑定**:服务器首先需要开启一个特定的端口,进行监听。通过调用`...

    VB(TCP-IP).rar_TCP服务器_VB TCP IP _VB TCP/IP_tcp_vb客户服务器

    描述中的"用VB实现客户——服务器(TCP/IP)编程实例"揭示了这是一个实际操作的教程,它将展示如何使用VB编写TCP/IP协议的客户端和服务器程序。TCP/IP是互联网上最基础的通信协议,它定义了数据在网络中的传输方式。...

    VS2013 C++ MFC,Socket,TCP服务端,多个客户端通信

    在本项目中,"VS2013 C++ MFC, Socket, TCP服务端, 多个客户端通信",我们探讨的是如何使用Microsoft Visual Studio 2013中的MFC(Microsoft Foundation Classes)库,结合Socket编程技术,来实现一个TCP...

    VC TCP服务端编写实例.rar

    今天与大家分享一个VC TCP服务端程序的编写实例,运行TCP/UDP的原理实现的一个服务端的程序示例,帮且VC 初学者了解网络的基本原理,测试时候可以选择是使用TCP或是UDP协议,虽然简单,不过可以向大家展示不少的网络...

    c# tcpsocket 原生代码编写 客户端和服务端程序

    本教程将深入探讨如何使用C#语言编写原生的TCP Socket客户端和服务端程序。TCP是一种面向连接的、可靠的传输协议,而Socket是TCP/IP协议族中用于进程间通信的接口。下面我们将详细讲解这两个方面的知识。 首先,...

    安卓TCP服务端代码

    在Android平台上实现TCP服务端代码是一项关键的技术任务,特别是在应对Android 7.0及以上版本的数据发送挑战时。TCP(Transmission Control Protocol)是一种面向连接、可靠的传输协议,广泛应用于网络通信中,包括...

    linux_多线程无阻塞socket.zip_linux_linux socket tcp_tablep1c_tcp+线程_tc

    在多线程环境下,TCP Socket可以同时处理多个客户端连接,提高服务端的并发性能。 无阻塞Socket是通过设置Socket为非阻塞模式实现的,使用`fcntl()`或`ioctl()`函数可以改变Socket的阻塞状态。在非阻塞模式下,如果...

    ftp.rar_ftp_ftp c linux_ftp linux服务端_ftp服务端_linux ftp

    8. **编程实现**:在C语言中编写FTP服务端需要理解TCP套接字编程,包括socket API的使用,如socket()、bind()、listen()、accept()、send()和recv()等函数。 9. **配置与管理**:FTP服务端的配置文件通常包含各种...

    C语言实现socket服务端和客户端

    该函数接受三个参数:协议族(如AF_INET代表IPv4)、socket类型(如SOCK_STREAM代表TCP,SOCK_DGRAM代表UDP)和协议(通常是0,由系统自动选择)。 ```c int socket_desc = socket(AF_INET, SOCK_STREAM, 0); ``...

Global site tag (gtag.js) - Google Analytics