Java Tcp协议socket编程学习
我学习到的主要步骤
第一步:以特定端口(如4800)新建socket对象第二步:以系统输入设备构造BufferedReader对象,该对象用于接收系统键盘输入的字符第三步:以socket对象 得到输出流来构造PrintWriter第四步:以socket对象得到输入流来构造相应的BufferedReader对象,该对象用于接收server端发送过来的信息
我理解到的关闭socket:先开的后关闭,socket最后关闭。
以下是客户端的代码实现:
package com.fan.socket;
import java.io.*;import java.net.Socket;
public class SocketClient {public static void main(String[] args) throws IOException{
try{Socket socket=new Socket('127.0.0.1',4800);System.out.println('client start ...');//向本机的4800端口发出客户请求BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//由系统标准输入设备构造BufferedReader对象PrintWriter write=new PrintWriter(socket.getOutputStream());//由Socket对象得到输出流,并构造PrintWriter对象BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//由Socket对象得到输入流,并构造相应的BufferedReader对象String readline;readline=br.readLine(); //从系统标准输入读入一字符串while(!readline.equals('end')){//若从标准输入读入的字符串为 'end'则停止循环write.println(readline);//将从系统标准输入读入的字符串输出到Server2write.flush();//刷新输出流,使Server马上收到该字符串System.out.println('Client:'+readline);//在系统标准输出上打印读入的字符串System.out.println('Server:'+in.readLine());//从Server读入一字符串,并打印到标准输出上readline=br.readLine(); //从系统标准输入读入一字符串} //继续循环write.close(); //关闭Socket输出流in.close(); //关闭Socket输入流 socket.close(); //关闭Socket }catch(Exception e) {System.out.println('can not listen to:'+e);//出错,打印出错信息}}
}
服务端代码实现:
package com.fan.socket;
import java.io.*;import java.net.ServerSocket;import java.net.Socket;
public class SocketService {public static void main(String[] args) throws IOException{SocketService socketService = new SocketService();socketService.oneServer();}public void oneServer(){try{ServerSocket server=null;try{server=new ServerSocket(4800);System.out.println('server start is ok...');//创建一个ServerSocket在端口4800监听客户请求}catch(Exception e) {System.out.println('can not listen to:'+e);//出错,打印出错信息}Socket socket=null;try{socket=server.accept();//使用accept()阻塞等待客户请求,有客户//请求到来则产生一个Socket对象,并继续执行}catch(Exception e) {System.out.println('Error.'+e);//出错,打印出错信息}String line;BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//由Socket对象得到输入流,并构造相应的BufferedReader对象PrintWriter writer=new PrintWriter(socket.getOutputStream());//由Socket对象得到输出流,并构造PrintWriter对象BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//由系统标准输入设备构造BufferedReader对象System.out.println('Client:'+in.readLine());//在标准输出上打印从客户端读入的字符串line=br.readLine();//从标准输入读入一字符串while(!line.equals('end')){//如果该字符串为 'end',则停止循环writer.println(line);//向客户端输出该字符串writer.flush();//刷新输出流,使Client马上收到该字符串System.out.println('Server:'+line);//在系统标准输出上打印读入的字符串System.out.println('Client:'+in.readLine());//从Client读入一字符串,并打印到标准输出上line=br.readLine();//从系统标准输入读入一字符串} //继续循环writer.close(); //关闭Socket输出流in.close(); //关闭Socket输入流socket.close(); //关闭Socketserver.close(); //关闭ServerSocket}catch(Exception e) {//出错,打印出错信息System.out.println('Error.'+e);}}}
相关文章:
1. 一文读懂Spring Cloud-Hystrix2. PHP终止脚本执行的实例代码3. Python中Selenium模块的使用详解4. SQL+HTML+PHP 一个简单论坛网站的综合开发案例(注册、登录、注销、修改信息、留言等)5. Python Pandas pandas.read_sql函数实例用法6. Python Opencv轮廓常用操作代码实例解析7. 详解JavaScript是如何验证URL的8. Python语言规范之Pylint的详细用法9. 使用python创建生成动态链接库dll的方法10. python用dataframe将csv中的0值数据转化为nan缺失值字样

网公网安备