java基础学习之网络编程

来源:互联网 发布:金山快快软件管家 编辑:程序博客网 时间:2024/05/29 13:56

有三种,单工,半双工,全双工


 客服端

/** * 这是一个客服端 */package com.test;import java.net.*;import java.io.*;/** * @author Administrator * */public class MyClient1 {/** * @param args */public static void main(String[] args) {// TODO 自动生成的方法存根MyClient1 mc=new MyClient1();}public MyClient1(){try {//Socket函数就是连接某刻服务器端Socket s=new Socket("127.0.0.1",9999);//如果连接成功,就可以发送数据给服务器//通过pw向s里面写数据,true表示及时刷新PrintWriter pw=new PrintWriter(s.getOutputStream(),true);pw.println("你好吗,我是客户端");//要读取s中传递的数据InputStreamReader isr=new InputStreamReader(s.getInputStream());BufferedReader br=new BufferedReader(isr);String response =br.readLine();System.out.println("客服端回收到:"+response);} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();} }}

服务端

/** * 这是第一个服务器端程序,让他监听9999端口 *可以接收客服端程序 */package com.test1;import java.io.*;import java.net.*;/** * @author Administrator * */public class MyServer1 {/** * @param args */public static void main(String[] args) {// TODO 自动生成的方法存根MyServer1 ms1=new MyServer1();}public MyServer1(){try {//在9999号端口监听ServerSocket ss=new ServerSocket(9999);System.out.println("我是服务器");//等待某个客服端来连接,该函数会返回一个Socket连接Socket s=ss.accept();//要读取s中传递的数据InputStreamReader isr=new InputStreamReader(s.getInputStream());BufferedReader br=new BufferedReader(isr);String info =br.readLine();System.out.println("服务器接收到:"+info);PrintWriter pw=new PrintWriter(s.getOutputStream(),true);pw.println("我是服务器,你也好么");} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();}}}
//////////////////////////////////////
一下是通过控制台来操作


/** * 这是一个客服端 */package com.test;import java.net.*;import java.io.*;/** * @author Administrator * */public class MyClient1 {/** * @param args */public static void main(String[] args) {// TODO 自动生成的方法存根MyClient1 mc=new MyClient1();}public MyClient1(){try {//Socket函数就是连接某刻服务器端Socket s=new Socket("127.0.0.1",9999);PrintWriter pw=new PrintWriter(s.getOutputStream(),true);InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);InputStreamReader isr2=new InputStreamReader(s.getInputStream());BufferedReader br2=new BufferedReader(isr2);while(true){System.out.println("请输入你想对服务器想说的话");//客户端先从控制台接收String info =br.readLine();//然后发给服务器pw.println(info);if(info.equals("bye")){System.out.println("结束");s.close();break;}//接收从服务器发来的话String res=br2.readLine();System.out.println("服务器说:"+res);//退出}} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();} }}

/** * 这是一个服务器程序,在9999端口监听 * 可以通过控制台,可以回送客服端信息 */package com.test1;import java.io.*;import java.net.*;/** * @author Administrator * */public class MyServer1 {/** * @param args */public static void main(String[] args) {// TODO 自动生成的方法存根MyServer1 ms1=new MyServer1();}public MyServer1(){try {//在9999号端口监听System.out.println("我是服务器,在9999监听。。。");ServerSocket ss=new ServerSocket(9999);//等待某个客服端来连接,该函数会返回一个Socket连接Socket s=ss.accept();//先接收客户端发来的信息InputStreamReader isr=new InputStreamReader(s.getInputStream());BufferedReader br=new BufferedReader(isr);PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//接收从控制台输入的信息InputStreamReader isr2=new InputStreamReader(System.in);BufferedReader br2=new BufferedReader(isr2);while(true){String infoFormClient=br.readLine();System.out.println("客服端发送来:"+infoFormClient);if(infoFormClient.equals("bye")){System.out.println("结束");s.close();break;}//接收从控制台输入的信息System.out.println("输入你想对客户端想说的话:");String response =br2.readLine();//把从控制台接收的信息回送给客户端pw.println(response);}} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();}}}


0 0