import java.net.*import java.io.*public class KnockKnockServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null
try {
serverSocket = new ServerSocket(4444)
} catch (IOException e) {
System.err.println("Could not listen on port: 4444.")
System.exit(1)
}
Socket clientSocket = null
try {
clientSocket = serverSocket.accept()
} catch (IOException e) {
System.err.println("Accept failed.")
System.exit(1)
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)
BufferedReader in = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()))
String inputLine, outputLine
KnockKnockProtocol kkp = new KnockKnockProtocol()
outputLine = kkp.processInput(null)
out.println(outputLine)
while ((inputLine = in.readLine()) != null) {
outputLine = kkp.processInput(inputLine)
out.println(outputLine)
if (outputLine.equals("Bye."))
break
}
out.close()
in.close()
clientSocket.close()
serverSocket.close()
}}
再简单不过了。
使用ServletSocket创建TCP服务器端
从图 中看上去TCP通信的两个通信实体之间并没有服务器端 客户端之分 但那是两个通信实体已经建立虚拟链路之后的示意图 在两个通信实体没有建立虚拟链路之前 必须有一个通信实体先做出 主动姿态 主动接收来自其他通信实体的连接请求
Java中能接受其他通信实体连接请求的类是ServerSocket ServerSocket对象用于监听来自客户端的Socket连接 如果没有连接 它将一直处于等待状态 ServerSocket包含一个监听来自客户端连接请求的方法
Socket accept() 如果接收到一个客户端Socket的连接请求 该方法将返回一个与客户端Socket对应的Socket(如图 所示每个TCP连接有两个Socket) 否则该方法将一直处于等待状态 线程也被阻塞
为了创建ServerSocket对象 ServerSocket类提供了如下几个构造器
ServerSocket(int port) 用指定的端口port来创建一个ServerSocket 该端口应该是有一个有效的端口整数值 ~
ServerSocket(int port int backlog) 增加一个用来改变连接队列长度的参数backlog
ServerSocket(int port int backlog InetAddress localAddr) 在机器存在多个 IP地址的情况下 允许通过localAddr这个参数来指定将ServerSocket绑定到指定的IP地址
当ServerSocket使用完毕 应使用ServerSocket的close()方法来关闭该ServerSocket 通常情况下 服务器不应该只接受一个客户端请求 而应该不断地接受来自客户端的所有请求 所以Java程序通常会通过循环 不断地调用ServerSocket的accept()方法 如下代码片段所示
//创建一个ServerSocket 用于监听客户端Socket的连接请求
ServerSocket ss = new ServerSocket( )
//采用循环不断接受来自客户端的请求
while (true)
{
//每当接受到客户端Socket的请求 服务器端也对应产生一个Socket
Socket s = ss accept()
//下面就可以使用Socket进行通信了
…
}
上面程序中创建ServerSocket没有指定IP地址 则该ServerSocket将会绑定到本机默认的IP地址 程序中使用 作为该ServerSocket的端口号 通常推荐使用 以上的端口 主要是为了避免与其他应用程序的通用端口冲突
返回目录 疯狂Java讲义
编辑推荐
Java程序性能优化 让你的Java程序更快 更稳定
新手学Java 编程
lishixinzhi/Article/program/Java/hx/201311/27266
1.由于服务器配置比较低综合考虑,选择ubuntu系统进行搭建
2. 登陆阿里云服务器:
方法一:使用xshell软件登陆服务器
主机填写ip地址
端口号选择22
连接登陆服务器
方法二:使用阿里云管理终端
ssh root@服务器ip地址
password:输入密码
3.如何上传文件
方法一:windows和linux上传或下载某个文件可以使用rz,sz
sudo apt-get install lrzsz
安装完成后进入准备存放改文件的文件夹输入rz,就会跳出文件选择框
例如:#cd apache-tomcat-7.0.69/bin rz
cd后有空格
cd ~:返回最上层
cd ..:返回上一层
cd -:返回最近操作
方法二:使用xshell中的插件Xftp
4.安装及配置环境
安装lsb指令
ubunu快捷安装需要的命令,更新一下:
自带源在大陆不好,更新即可解决
1.sudo apt-get update
2.apt-get install yum yum install -y redhat-lsb
输入lsb指令查看当前版本
查看版本号
lsb_release -a查看当前位数
getconf LONG_BIT
安装jdk:
方法一:ubuntu自动安装jdk
sudo apt-get install jdk
安装完成后配置环境:
使用vim指定编辑etc目录下profile文件,添加export
#vim /etc/profile
添加进profile文件
JAVA_HOME=/home/java/jdk1.6.0_12
export JRE_HOME=/home/liujicheng/java/jdk1.6.0_12/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
//java存放位置请自行更改
//使用 which java 查看jdk所在文件夹
方法二:本地下载jdk上传
下载对应系统32位或64位的tar.gz文件
建议:经过还几次对服务器进行环境搭建,已经有了一点小小的见解,建议不要使用过低版本的JDK,例如服务器JDK版本为1.5而项目JDK版本为1.8的情况,就会出现无法服务器无法运行.war文件的情况,建议版本为1.7
上传tar.gz文件有两种方法
11.输入命令行 rz 选择安装包上传 1使用rz时,注意安装 2.通过xftp将上传创建一个java文件夹
mkdir java
输入安装命令,将上传的.tar.gz文件解压到创建为java文件夹中
sudo tar -zxvf jdk-7u80-linux-x64.tar.gz -C /root/java
设置环境变量
使用vim指定编辑etc目录下profile文件,添加export
#vim /etc/profile添加进profile文件
JAVA_HOME=/root/java/jdk1.7.0_80
export JRE_HOME=/root/java/jdk1.7.0_80/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
//java存放位置请自行更改//使用 which java 查看jdk所在文件夹
选择E,然后输入i 进行写操作
最后 :x退出并保存
设置默认JDK
12345sudo update-alternatives --install /usr/bin/java java /root/java/jdk1.7.0_80/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /root/java/jdk1.7.0_80/bin/javac 300 sudo update-alternatives --install /usr/bin/jar jar /root/java/jdk1.7.0_80/bin/jar 300 sudo update-alternatives --install /usr/bin/javah javah /root/java/jdk1.7.0_80/bin/javah 300 sudo update-alternatives --install /usr/bin/javap javap /root/java/jdk1.7.0_80/bin/javap 300如果之后一个版本显示:
There is only one alternative in link group java (providing /usr/bin/java):
/usr/lib/jvm/jdk1.7.0_60/bin/java
否者,选择合适的jdk
检查jdk是否安装成功,输出版本号及对应信息即安装成功
#java
#javac
#java -version
安装tomcat
方法一:ubuntu自动安装tomcat
sudo apt-get install tomcat
添加jdk和jre环境变量
JAVA_HOME=/home/java/jdk1.6.0_12
JRE_HOME=/home/homer/eclipse/jdk1.6.0_12/jre
PATH=$JAVA_HOME/bin:$JRE_HOME:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
TOMCAT_HOME=/opt/apache-tomcat-7.0.29
启动tomcat
cd apache-tomcat-7.0.69/bin ./startup.sh
出现提示说明配置成功
方法二:上传tomcat并解压
通过上述上传文件方法上传后
使用tar指令解压
tar -zxvf apache-tomcat-8.0.24.tar.gz
然后进入apache-tomcat-7.0.69文件夹
# cd apache-tomcat-8.0.24 /bin/
启动tomcat
cd apache-tomcat-8.0.24 /bin/ ./startup.sh
显示如下说明成功
最后输入:http://x.x.x.x:8080/ (x代表ip地址),显示tomcat首页说明配置成功
安装Mysql
ubuntu下自动安装
sudo apt-get install mysql-server
apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
设置数据库密码:
检查Mysql是否安装成功
sudo netstat -tap | grep mysql
登陆Mysql
mysql -uroot -p密码
成功:
查看数据库
show databases
将.sql文件导入
//先选定数据库
use iswust
source /root/test.sql//source /文件夹/sql文件名
select * from score
5.java工程打包上传并运行
右键选中java项目,WAR Export 将文件以war格式导出
(注意:java工程的jdk一定要先降低到与服务器的jdk版本相同,例如java工程为1.8而服务器为1.6则会报错)
降低jdk方法:
并通过XFTP或上述的上传文件方法,上传至apache-tomcat-7.0.69/webapps中
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)