tcp入门笔记

初学Java的的网络编程

java中需要使用 ServerSocket 类和 Socket 类

基于请求-xiangying

ServerSocket服务端,在客户端未请求时监听端口,当监听到客户端请求时返回一个socket对象,利用io传输数据



服务端

public class MulThreadSocketServer {


    public static void main(String [] args){


              ServerSocket serverSocket = null;


              套接字socket = null;


              //监听端口号


              int port = 44321;


              尝试{


                       //建立连接


                       serverSocket =新的ServerSocket(端口);


                       的System.out.println( “服务器已启动:”);


                       while(true){


                                //获得连接


                                socket = serverSocket.accept();


                                //启动线程


                                new LogicThread(socket);


                       }


              catch(Exception e){


                       e.printStackTrace();


              } finally {


                       try {


                                //关闭连接


                                serverSocket.close();


                       } catch(Exception e){}


              }


    }


}

同时接受多个客户端请求

利用鲜橙线程,每监听到一个客户端请求就分发一个线程

线程类

公共类LogicThread扩展Thread {


Socket socket;


InputStream是;


OutputStream os;


公共LogicThread(套接字套接字){


this.socket =套接字;


开始(); //启动线程


}


public void run(){


byte [] b = new byte [1024];


尝试{


//初始化流


os = socket.getOutputStream();


is = socket.getInputStream();


for(int i = 0; i <3; i ++){


//读取数据


int n = is.read(b);


//逻辑处理String data = new String(b,0,n); 的System.out.println( “客户端发送数据:” +数据); // data-data if(data.equals(“AAA”)){ data =“小姐姐”; } else if(data.equals(“BBB”)){ data =“gay”; } else {











data =“AAA”;
} os.write(data.getBytes()); } } catch(Exception e){ e.printStackTrace(); } finally { close(); } } / ** *关闭流和连接* / private void close(){ try { //关闭流和连接os.close(); is.close(); socket.close(); } catch(Exception e){ } } / ** *逻辑处理方法,实现echo逻辑* @param b *客户端发送数据缓冲区* @param off *起始下标* @param len *有效数据长度* @return


客户端

public class SimpleSocketClient {
public static void main(String [] args){


Socket socket = null;


InputStream = null;


OutputStream os = null;


//服务器端IP地址


String serverIP =“127.0.0.1”;


//服务器端口号


int port = 44321;


//发送内容


try {


//建立连接


socket = new Socket(serverIP,port);


//初始化流


os = socket.getOutputStream();


is = socket.getInputStream();


字节[] b =新字节[1024];


for(int i = 0; i <3; i ++){
System.out.println(“A:”);
//发送数据
Scanner inputScanner = new Scanner(System.in);
String data = inputScanner.next();
os.write(data.getBytes());


//接收数据


int n = is.read(b);


//输出反馈数据


System.out.println(“服务器反馈:”+ new String(b,0,n));


}


} catch(Exception e){


e.printStackTrace(); //打印异常信息


} finally {


try {


//关闭流和连接


is.close();


os.close();


socket.close();


} catch(Exception e2){
}


}


}


}




































































* /


private byte [] logic(byte [] b,int off,int len){


byte [] response = new byte [len];


//将有效数据拷贝到数组响应中


System.arraycopy(b,0,response,0,len);


回复回复;


}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值