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客户端功能 就好了。
测试时,我启动了两个客户端,截图如下
所以便可验证服务端编写完成。
相关推荐
使用C#编写TCP Socket,包括客户端和服务端,可同时运行进行测试
基于SOCKET编程,采用TCP连接方法编写的服务端,可以连接指定连接个数,监听客户端,然后接受客户端发送过来的内容,也可以发送数据到客户端。
今天与大家分享一个VC TCP服务端程序的编写实例,运行TCP/UDP的原理实现的一个服务端的程序示例,帮且VC 初学者了解网络的基本原理,测试时候可以选择是使用TCP或是UDP协议,虽然简单,不过可以向大家展示不少的网络...
c# tcpsocket 原生代码编写 客户端和服务端程序
提供TCP、UDP客户端服务端例程代码,tcp_client,tcp_server,udp_client,udp_server
本文实例为大家分享了python多线程实现TCP服务端的具体代码,供大家参考,具体内容如下 需求 1.创建一个TCP服务器接收服务端发送的信息并给予答复 2.以多线程方式实现接收客户端信息 3.间客户端发送的信息解码...
基于C语言socket编写的服务端和客户端,实现了两者之间的信息传输
基于TCP的socket客户端、服务端通信实例,C++编写。 运行时,先运行服务端,再运行客户端。
聊天服务器客户端系统 基于TCP/IP 的Socket编写, 支持多人同时在线聊天
TCP C#编写客户端和服务端源代码,经过验证可运行。可放心使用
因为频繁需要测试网络连接,所以特意用QT编写了这个Socket工具,可使用TCP 以及 UDP 来建立服务端 和客户端等,涵盖大部分网络测试使用需求,使用 Qt 编写,无错误无警告,可直接编译运行。 分设的有点多,但是...
C#实现的TCP服务端及客户端实例源代码 在winform框架下,使用vs2017工具,使用Socket编写 服务端具备:在线列表刷新显示,如果断开链接会自动剔除,防止占用连接。 选中其中的客户端可以进行传输控制,具备信息接收...
socket_programming:这是一个简单的任务,实际上是通过TCP和UDP实现套接字编程的
该资源包整合了多个C/C++的modbustcp开发源程序,为你的开发提供一定思路
MFC中基于TCP的客户端与服务端的通信 // client.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #define PORT 5000 #define BUFFER 1024 void main(int ...
基于TCP IP 的socket客户端和服务器的编程,包含两个可执行文件,可以客户端和服务器直接通讯,界面做成了串口工具的样子。
本文件传输系统采用TCP协议进行通信,实现了windows与linux通信,打破了只能在windows下传输文件的弊端,本程序的编写对通信编程新手有很大的帮助作用,本系统目前只支持windows向linux发送多种类型文件,大文件传输...
这是一个 vs2008 编写的 服务端与客户端 测试成功
例子主要包括SocketAsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,...服务端用C#编写,并使用log4net作为日志模块; 同时支持65536个连接,网络吞吐量可以达到400M。