服务器端与客户端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# 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.实验目的 ...
随机推荐
- 桥接和nat模式区别
bridged networking(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器.在桥接模式下,你需要手工为虚拟系统配置IP地址 ...
- Bug测试报告--连连看——天天向上
测试时间:2016-11-23 20:10 测试者:刘芳芳(nice!团队) 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git. ...
- shell 显示字体颜色
(2).颜色语法: \033[前景色;背景色m \033[0m #0m代表恢复到系统默认的颜色 (3).字符界面前景颜色与背景颜色: 前 ...
- linux初始化配置---主机名、关闭防火墙、关闭selinux
一.修改主机名 1.零时修改 [root@localhost network-scripts]# hostname jw07 然后就可以看到我们的主机名被修改了
- mys.cnf-性能优化
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = socket = /data//mysql.sock [mysql] no-auto-rehash [mys ...
- [问题2015S02] 复旦高等代数 II(14级)每周一题(第三教学周)
[问题2015S02] 设 \(a,b,c\) 为复数且 \(bc\neq 0\), 证明下列 \(n\) 阶方阵 \(A\) 可对角化: \[A=\begin{pmatrix} a & b ...
- Windows Store Apps, Error: The certificate specified has expired.(转)
Windows Store Apps, Error: The certificate specified has expired. 0 comments|Posted on October 7th, ...
- java编写一个可以上下移动的小球:运行后,可以通过上下左右键进行移动
/* * 功能:加深对事件处理机制的理解 * 1.通过控制上下左右键,来控制一个小球的位置 */package com.test1;import java.awt.*;import javax.swi ...
- jdom xml解析
import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import org.xml. ...
- iOS - C 应用
前言 1)操作符两端必须加空格,(每行第一个赋值语句对齐). 2)变量名必须是英文(不能是拼音):英文.数字.下划线和美元符号. 3)等于号 == 反过来写(0 == i%4)防止少些赋值号的错误. ...