仿QQ平台实践第一步-实现聊天

本文通过实例讲解了服务端与客户端的基本概念及交互过程。通过一个简单的Java代码示例,展示了如何创建服务端并接收客户端的数据请求,以及如何响应客户端。此外还介绍了如何在Windows环境下配置环境变量和使用telnet命令进行本地通信。

2016.10.13

 

乐逗的校园大使的任务差不多都结束了,终于可以全身心的投入找工作了,向胡哥说的那样,每天面一场,然后总结,一定要争取机会去复试。加油!

现在继续在这边上课了。现在总结一下今天的上课内容,以后也尽量像这样及时的写技术博客。

什么叫服务端和客户端?

假如打开一个网页,你要查询资料。你是客户,因为你在访问,你访问的是客服端。去吃饭,你到饭店,你点餐你是顾客(客户端)Client,服务员也就是(服务端)Server

以一段代码为例:

public class TestServer {
	 public void startStar(int port){
     	try{
     		//1.创建一个服务器对象
     		System.out.println("1,开始创建服务器");
		    java.net.ServerSocket ss = new java.net.ServerSocket(port);
		    //2.等待连接进入
		    System.out.println("2,服务器创建成功在"+port);
		    while(true){
		    java.net.Socket client = ss.accept();//阻塞住,待机状态
		    System.out.println("3,在客服机进入..."+port);
		    //取得输入输出对象
		    java.io.InputStream ins = client.getInputStream();
		    java.io.OutputStream ous = client.getOutputStream();
		    //4.读写错了...
		    String msg ="hello";
		    byte[] data =msg.getBytes();
		    ous.write(data);
		    int t = ins.read();//阻塞
		    System.out.println("读到发来的一个字节: "+t);
		        }
     	}catch(Exception e){
     		e.printStackTrace();
     	}
     }

	public static void main(String[] args) {
		TestServer ss = new TestServer();
		ss.startStar(7676);
      }
}

 运行结果如下:

 1,开始创建服务器

 2,服务器创建成功在7676

 在windows环境下,命令行程序为cmd,然后输入ipconfig,出现如下IPV4就是本机的服务器地址,好像每次运行的都不一样。

 由于开始时电脑的Telnet客户端默认是关闭的,所以要自己打开。还有就是我这个自己添加了ipconfig的环境变量。

 

大概持续了好几分钟。

命令行模式 输入 telnet localhost  端口号

如果就是本地传输,则只要输入:

telnet localhost port(本次是7676)

结果如下:

 如果是与别人的电脑进行通信,则需输入:telnet xxx.xxx.x(对方的ip地址) 端口号 



 回去可以查看寝室的路由器,进行通信哦。

 over,洗澡睡觉。。

 这个是PDF上的,和上面的代码基本上一样。

 

public class TestServer {
	public void setUpServer(int port){
		//建立绑定在指定窗口上的服务器对象
		try {
			ServerSocket server = new ServerSocket(port);
			System.out.println("服务器创建成功! "+port);
			//让服务器进入等待状态:阻塞状态
			Socket client = server.accept();
			//从连接对象上得到输入输出流对象
			OutputStream out = client.getOutputStream();
			InputStream ins = client.getInputStream();
			String s = "你好,欢迎来javaKe.com\r\n";
			byte [] data = s.getBytes();//取得组成这个字符串的字节
			out.write(data);//用输出对象发送数据
			out.flush();//强制输出
			client.close();//关闭与客户机的连接
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
        public static void main(String[] args){
        	TestServer ts = new TestServer();
        	ts.setUpServer(8887);
       }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值