服务器端与客户端TCP连接入门(二)
1、服务器端程序
package Socket; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket; public class EchoServer { public static void main(String[] args) throws Exception { ServerSocket server =null;//定义ServerSocket对象
Socket client=null;//定义socket对象,表示客户端
PrintStream out=null;//声明打印流对象,以向客户端输出
BufferedReader buf = null;//用于接收客户端发来的信息
server = new ServerSocket();//此服务器在8888端口进行监听
boolean f=true;
while(f){
System.out.println("服务器运行,等待客户端连接");
client=server.accept();//接收客户端连接
buf = new BufferedReader(new InputStreamReader(client.getInputStream()));//得到客户端的输入信息
out= new PrintStream(client.getOutputStream());
//循环读取buf所有内容
boolean flag=true;
while(flag){
String str=buf.readLine();
if(str==null||"".equals(str)){
flag=false;//结束循环
}
else{
if("bye".equals(str)){
flag=false;
}
else
{
out.println("ECHO:"+str);//正常结束,向客户端回显信息
}
}
}
out.close();
client.close(); }
server.close();
} }
2、客户端程序
package Socket; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException; public class EchoClient { public static void main(String[] args) throws Exception { Socket client=null;//声明Socket对象
client=new Socket("localhost",);//指定连接的主机和端口
BufferedReader buf=null;//接收服务器端发送回来的信息
PrintStream out=null;//输出流,向服务器端发送信息
BufferedReader input=null;
input=new BufferedReader(new InputStreamReader(System.in));//从键盘接收数据
out = new PrintStream(client.getOutputStream());//向服务器端发送信息
buf= new BufferedReader(new InputStreamReader(client.getInputStream()));//接收服务器端输入信息
boolean flag=true;
while(flag){
System.out.println("输入信息:");
String str=input.readLine();//从键盘接收数据
out.println(str); //向服务器端输入信息
if("bye".equals(str)){ //如果输入bye,结束操作
flag=false;
}
else{
String echo=buf.readLine();//接收ECHO信息
System.out.println(echo);//输出ECHO信息
}
}
client.close();
buf.close();
} }
效果如下:

此时,服务器每次只能有一个用户连接,属于单线程,要让多个用户连接服务器,要使用多线程...
服务器端与客户端TCP连接入门(二)的更多相关文章
- 服务器端与客户端TCP连接入门(一)
Java中使用Socket(即套接字)完成TCP程序的开发 服务器端使用ServerSocket接收客户端的连接请求,每一个客户端都使用一个Socket对象表示 在服务器端每次运行时都要使用accep ...
- 服务器端与客户端TCP连接入门(三:多线程)
对于服务器端来说,如果要加入多线程机制,则应该在每个用户连接之后启动一个新的线程 建立一个EchoThread类,此类专门用于处理多线程操作,此时的多线程使用Runnable接口实现 package ...
- 详解TCP四次挥手(断开TCP连接过程)
在讲述TCP四次挥手,即断开TCP连接的过程之前,需要先介绍一下TCP协议的包结构. TCP协议包结构: 这里只对涉及到四次挥手过程的字段做解释 (1) 序号(Sequence number) 我们通 ...
- 详解TCP三次握手(建立TCP连接过程)
在讲述TCP三次握手,即建立TCP连接的过程之前,需要先介绍一下TCP协议的包结构. 这里只对涉及到三次握手过程的字段做解释 (1) 序号(Sequence number) 我们通过 TCP 协议将数 ...
- 配置开发支持高并发TCP连接的Linux应用程序全攻略
http://blog.chinaunix.net/uid-20733992-id-3447120.html http://blog.chinaunix.net/space.php?uid=16480 ...
- Linux配置支持高并发TCP连接(socket最大连接数)
Linux配置支持高并发TCP连接(socket最大连接数) Linux配置支持高并发TCP连接(socket最大连接数)及优化内核参数 2011-08-09 15:20:58| 分类:LNMP&a ...
- 高并发TCP连接数目问题
linux可通过五元组唯一确定一个链接:源IP,源端口,目的IP,目的端口,传输层协议.而一个端口不允许被两个及以上进程占用(一个进程可同时占用多个端口),据此是否可以推测一台linux服务器最多可以 ...
- TCP学习之二:客户端与服务端的连接
主要参考张子阳大神的博客:http://www.cnblogs.com/JimmyZhang/category/101698.html TcpClient是对Socket的封装 一个TcpClient ...
- TCP服务器端和客户端程序设计【转】
本文转载自:http://blog.csdn.net/yueguanghaidao/article/details/7035248# 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.实验目的 ...
随机推荐
- 大型网站演化(转载 http://homeway.me/2014/12/10/think-about-distributed-clusters/)
0x01.大型网站演化 简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. 集群主要分为:高可用集群(High Availability Clu ...
- 方法过滤器,分布式缓存 Memcached实现Session解决方案
控制器-〉方法过滤器-〉controller-> 方法 所以通过建立controller基类的方法进行方法过滤,所有控制器先执行基类的OnActionExecuting 方法. using Sp ...
- each(callback) 对于每个匹配的元素所要执行的函数
以每一个匹配的元素作为上下文来执行一个函数. 意味着,每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素).而且,在每次执行函数时,都会给函数传递一 ...
- POJ 2195:Going Home(最小费用最大流)
http://poj.org/problem?id=2195 题意:有一个地图里面有N个人和N个家,每走一格的花费是1,问让这N个人分别到这N个家的最小花费是多少. 思路:通过这个题目学了最小费用最大 ...
- Linux C Programing - Arguments(2)
#include <iostream> #include <stdlib.h> #include <stdio.h> //printf #include <u ...
- Ubuntu16.04搭建LAMP架构服务器
安装Apache: weirubo@weirubo-VirtualBox:~$ sudo apt-get install apache2 查看Apache版本: weirubo@weirubo-Vi ...
- bat命令
将DIR设置为当前文件所在的绝对路径 @echo off echo 当前盘符:%~d0 echo 当前盘符和路径:%~dp0 echo 当前盘符和路径的短文件名格式:%~sdp0 echo 当前批处理 ...
- CentOS7 续
网络环境 第一步:通过cmd查询自己本机的IP,然后记录下来,手工配置到本地连接上面IP:子网掩码:DNS1:101.7.8.9DNS2:202.38.184.13 第二步:给物理机 本地连接配置第二 ...
- 十五、JDBC操作数据库
1.数据库特点 实现数据共享.减少数据的冗余度.数据的独立性.数据集中控制.数据的一致性和可维护性. 2.数据库种类和功能 (1)层次型数据库:类似于树结构,是一组通过链接而互相联系在一起的记录. ( ...
- 学习从零开始写jQuery框架
随着时代发展,javascript阵营里面出现了越来越多的优秀的框架,大大简化了我们的开发工作,在我们使用这些框架的时候是不是也应该饮水思源想想它们都是怎样构建起来的呢?如果你不满足于仅仅是使用一些现 ...