`

Socket编程的HelloWorld实例

阅读更多
public class Client
{
	
	
	public static void main(String[] args)
	{	
		Client c=new Client();
	 	c.receiveMessage();
	}
	
	public void receiveMessage(){
		Socket s=null;
		
		BufferedReader sbr=null;
		try
		{
			s=new Socket("127.0.0.1",9999);
			
			OutputStream os=s.getOutputStream();
			PrintWriter out=new PrintWriter(os,true);
			BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
			
		//	IOUtils.write("receive", os);
//			InputStream is=s.getInputStream();
		
			sbr=new BufferedReader(new InputStreamReader(System.in));
			
			
			String message;
			while((message=sbr.readLine())!=null){
				out.println(message);
				String rs=br.readLine();
				System.out.println("receive message is "+rs);
				if(rs.equalsIgnoreCase("disconnect")){
					System.out.println("discon");
					break;
				}
				
			
			}
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}finally{
			if(s!=null)
				try
				{
					s.close();
				}
				catch (IOException e)
				{
					e.printStackTrace();
				}
		}
	}
}




public class Server
{
	
	
	
	public static void main(String[] args)
	{
		Server s=new Server();
		s.startServer(9999);
	}
	
	public void startServer(int port){
		ServerSocket ss = null;
		Socket socket = null;
		try
		{
			ss = new ServerSocket(9999);
			while (true)
			{
				try
				{
				 	System.out.println("waiting...");
					socket = ss.accept();
					InputStream is = socket.getInputStream();
//					String s = IOUtils.toString(is);
//					System.out.println("s= " + s);

					BufferedReader br = new BufferedReader(
							new InputStreamReader(is));
					PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
					String str=null;
					while((str=br.readLine())!=null){
						if(str.equalsIgnoreCase("quit")){
							//关闭
							out.println("disconnect");
							break;
						}
						System.out.println("str="+str);
						out.println("Receive:"+str);
					}
				}catch(IOException e){
					e.printStackTrace();
				}
				finally
				{
					if (socket != null)
					{
						socket.close();
					}
				}
			}
		}
		catch (IOException e)
		{

			e.printStackTrace();
		}
		finally
		{
			if (ss != null)
				try
				{
					ss.close();
				}
				catch (IOException e)
				{

					e.printStackTrace();
				}

		}
	}

}


通过client,可以一直向Server发送信息,并得到返回信息。

输入quit,则和服务器之间断开连接。
分享到:
评论

相关推荐

    Linux-Socket-服务器编程实例.pptx

    Linux Socket服务器端编程实例 例:建立一个Linux TCP服务器,等待客户端的连接请求,一旦接收到客户端请求,将客户端的IP地址和端口号打印出来,并且向客户端发送"Hello!Socket communication world!"字符串,然后...

    Java高手真经(编程基础卷)光盘全部源码 免积分

    javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) javareflection.zip 26.Java反射机制与动态代理 javageneric.zip 27.Java泛型编程 javaannotation.zip 28.Java注释符编程 ...

    Java高手真经(编程基础卷)光盘全部源码

    javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) javareflection.zip 26.Java反射机制与动态代理 javageneric.zip 27.Java泛型编程 javaannotation.zip 28.Java注释符编程 ...

    java高手真经 光盘源码

    javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) javareflection.zip 26.Java反射机制与动态代理 javageneric.zip 27.Java泛型编程 javaannotation.zip 28.Java注释符编程 ...

    TCL、TK学习交流文档

    Tcl介绍 “Hello World” 程序及扩展 变量 数据类型 特殊字符 数据结构 控制结构 程序结构 语法要点 对数据库操作实例( oracle ) Socket编程实例 ktcl 文件及其冲值卡自服务修改密码例程 一些建议

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java源码包---java 源码 大量 实例

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    vc++ 开发实例源码包

    ListenSocket.h 侦听接口类文件 ChatSocket.h 聊天接口类文件 SettingDlg.h 设置对话框类文件 LocalInfoDlg.h 查看本地信息对话框类文件 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 如题。 FTP、...

    Java视频教程 Java游戏服务器端开发 Netty NIO AIO Mina视频教程

    01、Mina服务端helloWorld入门.flv 02、Mina客户端helloWorld入门.flv 03、Mina整体体系结构分析.flv 04、Mina学习之长短连接.flv 05、Mina学习之MinaIOService接口.flv 06、Mina学习之MinaIOFilter接口.flv ...

    linux编程白皮书

    第1章 Hello, World 145 1.1 内核模块的Makefiles文件 146 1.2 多重文件内核模块 147 第2章 字符设备文件 149 第3章 /proc文件系统 158 第4章 把/proc用于输入 162 第5章 把设备文件用于输入 170 第6章 启动参数 182...

    Python核心编程第二版

     2.1 程序输出,print语句及“Hello World!”   2.2 程序输入和raw_input()内建函数   2.3 注释   2.4 操作符   2.5 变量和赋值   2.6 数字   2.7 字符串   2.8 列表和元组   2.9 字典...

    嵌入式Linux程序设计案例与实验教程-实例代码

    实验2.2 Makefile与helloworld19 2.3 Linux多线程库编程21 2.3.1 多线程21 2.3.2 Linux下的多线程21 2.3.3 生产者-消费者模型简述22 2.3.4 缓冲区操作概述22 2.3.5 几个线程API23 实验2.3 Linux多线程...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    Cocos2d x手机游戏开发与项目实战详解.part3

     第四章主要介绍Cocos2d-x的环境搭建和HelloWorld的项目实现,通过本章读者可以快速上手开发一个最简单的移动游戏UI,并通过该案例以了解Cocos2d-x的运行原理。  第五章主要介绍Cocos2d-x核心技术,这里包括Cocos...

    宋劲彬的嵌入式C语言一站式编程

    37. socket编程 1. 预备知识 1.1. 网络字节序 1.2. socket地址的数据类型及相关函数 2. 基于TCP协议的网络程序 2.1. 最简单的TCP网络程序 2.2. 错误处理与读写控制 2.3. 把client改为交互式输入 2.4. 使用fork并发...

    iPhone应用开发从入门到精通代码

    图形界面基础框架1398.1 UIApplication1398.1.1 UIApplication类方法1408.1.2 UIApplication属性方法1408.1.3 UIApplication实例方法1428....1568.6 hello world实例程序1578.7 本章小结1628.8 本章练习162第9章...

    LINUX编程白皮书

    第1章 Hello, World 145 1.1 内核模块的Makefiles文件 146 1.2 多重文件内核模块 147 第2章 字符设备文件 149 第3章 /proc文件系统 158 第4章 把/proc用于输入 162 第5章 把设备文件用于输入 170 第6章 启动参数 182...

Global site tag (gtag.js) - Google Analytics