昨天看了一下,TCP网络设计,虽然之前老师讲过,当时好像没怎么弄,不会,现在感觉这个蛮有意思的,从零开始,一步一步的学习它!
(1)TCP服务器程序如下:
package 网络程序设计;import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
String data=null;//存放接受的字符串
try{
ServerSocket ss=new ServerSocket(6666); //写个Socket端口“6666”,随便取的,不过要在0~65535之内(1~1032,是署名端口号,不可挪做他用)
Socket st=ss.accept(); //创建一个倾听的Socket
System.out.println("Server has connected");
BufferedReader in=new BufferedReader(new InputStreamReader(st.getInputStream()));//创建一个从Socket中读文本行的流
PrintWriter out=new PrintWriter(st.getOutputStream(),true);//创建一个向Socket中写文本行的流,自动刷新
do{
data=in.readLine();//读取客户机发送的一行文本
System.out.println("服务端收到的字符串是:"+data);//在屏幕中打印出来
System.out.println("服务端发回的字符串是:"+data);
out.println(data);
out.flush();//清空缓存区
}while(!data.equals("bye"));//接收到“bye”就结束通信
out.close();//关闭Socket输出流
in.close();//关闭Socket输入流
st.close();//关闭Socket
ss.close();//关闭SocketServer
}catch(Exception e){
System.out.println("Whoops!It didn't work!"+e);
}
}
}
(2)TCP客户机程序如下:
package 网络程序设计;
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
// TODO Auto-generated method stub
String data=null;
String kdata=null;
try{
Socket st=new Socket("192.168.1.106",6666);//向服务器发起连接,本机IP
PrintWriter out=new PrintWriter(st.getOutputStream(),true);//创建一个向Socket中写文本行的流,自动刷新
BufferedReader in=new BufferedReader(new InputStreamReader(st.getInputStream()));//创建一个从socket中读文本行的流
BufferedReader kin=new BufferedReader(new InputStreamReader(System.in));//创建一个键盘读文本行的流
do{
System.out.print("客户端发出的字符串:");
kdata=kin.readLine();//从键盘中读取一行字符
out.println(kdata);//向服务器发送过去
data=in.readLine();//读取服务器的响应
System.out.println("客户端收到的字符串:"+data);
out.flush();//清除缓存区
}while(!kdata.equals("bye"));//发送“bye”就结束通信
out.close();//关闭Socket输出流
in.close();//关闭Socket输入流
st.close();
}catch(Exception e) {
System.out.println("Whoops!It didn't work!"+e);
}
}
}
//首先运行TCPServer,再运行TCPServer,在客户端首先发送一条消息“Hello TCPServer!”,再发一条“I'm TCPClient!”,最后发送“bye”,就结束通信。
(3)运行结果如下:
TCPClient:
客户端发出的字符串:Hello TCPServer
客户端收到的字符串:Hello TCPServer
客户端发出的字符串:I'm TCPClient!
客户端收到的字符串:I'm TCPClient!
客户端发出的字符串:bye
客户端收到的字符串:bye
TCPServer:
Server has connected
服务端收到的字符串是:Hello TCPServer
服务端发回的字符串是:Hello TCPServer
服务端收到的字符串是:I'm TCPClient!
服务端发回的字符串是:I'm TCPClient!
服务端收到的字符串是:bye
服务端发回的字符串是:bye