欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java基于Tcp协议的socket编程实例

程序员文章站 2024-03-02 17:01:46
本文实例讲述了java基于tcp协议的socket编程方法,分享给大家供大家参考。具体分析如下: 以下是一对一的通信编程实现,后续会继续学习一个服务器监听多个客户端的实现...

本文实例讲述了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);
//将从系统标准输入读入的字符串输出到server2
write.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")){
//如果该字符串为 "bye",则停止循环
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(); //关闭socket
server.close(); //关闭serversocket
}catch(exception e) {//出错,打印出错信息
system.out.println("error."+e);
}
}
}

希望本文所述对大家的java程序设计有所帮助。