socket示例代码演示程序(螺纹)

socket示例代码演示程序(螺纹)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

client码,如以下:

import java.io.*;
import java.net.*;
public class DailyAdviceClient {
	public void go(){
			
		try {
			Socket s=new Socket("127.0.0.1",4242);//建立对server的Socket连接
			//client从server读取数据
			//建立连接到socket上低层输入串流的InputStreamReader
			//InputStreamReader是低层和高层串流间的桥梁
			//s.getInputStream()从Socket取得输入串流
			InputStreamReader streamReader=new InputStreamReader(s.getInputStream());
			//建立BufferedReader来读取
			BufferedReader reader=new BufferedReader(streamReader);
			String adviceString=reader.readLine();
			System.out.println("Today you should: "+adviceString);	
			//client向server发送数据	
			//创建不带自己主动行刷新的PrintWriter对象。
			//假设加入第二个參数true,则为自己主动刷新,不须要写writer.flush()这行代码	
			PrintWriter writer=new PrintWriter(s.getOutputStream());
			writer.println("Hello,I am Client2!");
			writer.flush();//刷新发送数据
			System.out.println("此套接字连接的远程地址:"+s.getInetAddress().getHostAddress());
			System.out.println("此套接字绑定的本地地址:"+s.getLocalAddress().getHostAddress());
			System.out.println("此套接字绑定的本地端口:"+s.getLocalPort());
			System.out.println("此套接字连接到的远程端口:"+s.getPort());
			s.close();//关闭socket
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	public static void main(String[]args){
		DailyAdviceClient client=new DailyAdviceClient();
		client.go();
	}
}

server端代码例如以下:

import java.io.*;
import java.net.*;
public class DailyAdviceServer {
	String[] adviceList={"Take smaller bites","One word: inappropriate",""
			+ "Just for today,be honest","Tell your boss"};
	public void go(){
		
		try {
			//服务器应用程序对特定port创建出ServerSocket对象
			//这会让服务器应用程序监听来自4242port的client请求
			ServerSocket serverSocket=new ServerSocket(4242);
			//服务器进入无穷循环等待client的请求
			while(true){
				System.out.println("等待client连接...");
				//接收到用户连接请求后。此方法会返回一个socket。以便于client通信
				//此socket的port号和serverSocket的port号不同
				Socket sock=serverSocket.accept();//此方法会堵塞直到有连接请求到达
				System.out.println("此套接字连接的地址:"+sock.getInetAddress().getHostAddress());
				System.out.println("此套接字绑定的本地地址:"+sock.getLocalAddress().getHostAddress());
				System.out.println("此套接字绑定的本地port:"+sock.getLocalAddress());
				System.out.println("此套接字连接到的远程port:"+sock.getPort());
				//服务器向client发送数据
				PrintWriter writer=new PrintWriter(sock.getOutputStream());
				String adviceString=getAdvice();
				writer.println(adviceString);
				writer.flush();
				System.out.println(adviceString);
				//服务器接收client发送的数据
				InputStreamReader streamReader=new InputStreamReader(sock.getInputStream());
				BufferedReader reader=new BufferedReader(streamReader);
				String adviceStringREC=reader.readLine();
				System.out.println("REC: "+adviceStringREC);			

			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	public String getAdvice(){
		int random=(int)(Math.random()*adviceList.length);
		return adviceList[random];
		
	}
	public static void main(String []args){
		DailyAdviceServer server=new DailyAdviceServer();
		server.go();
	}
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117307.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oSIP协议栈浅析

    oSIP协议栈浅析1.oSIP介绍2.oSIP结构分析2.1oSIP结构2.2状态机(FiniteStateMachines)模块2.2.1 概述2.2.2ICT状态机2.2.3NICT状态机2.2.4IST状态机2.2.5NIST状态机2.3解析器(Parsers)模块2.3.

    2022年6月16日
  • 数据分析sql面试必会6题经典_SQL常见面试题[通俗易懂]

    数据分析sql面试必会6题经典_SQL常见面试题[通俗易懂]SQL主要是用来到数据库里查询数据,这是数据分析过程的第一步。你要分析数据,首先要获取数据。所以,这是转行到数据分析岗位的必备技能。感谢@猴子老师的“猴子聊人物”公众号,我入门SQL就是在猴子的“转行数据分析师闯关教程”里学到的。柯本:新手如何学习SQL​zhuanlan.zhihu.com柯本:《MySQL必知必会》学习小结​zhuanlan.zhihu.com一、SQL性能优化题SQL语句…

    2022年4月19日
  • 网络编程01_01是什么

    网络编程01_01是什么网络编程1.1概述网络编程的目的:信息传递,数据交换,通信。实现网络的条件:如何准确定位网络上的一台主机?IP地址+端口号定位到这台计算机上的某个资源找到了这个主机,如何传输数据?——硬件传输介质网络通信的规则:协议——UDP,TCP​ TCP/IP参考模型[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aBe6VKUl-1639203769386)(…/image/01-16372424176942.png)]Javaweb——网页

    2022年8月9日
  • java连接redis集群方式_redis java

    java连接redis集群方式_redis javapackageorg.rx.util;importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Autowired;im…

    2022年10月12日
  • 嵌入式–接口(一)Camera接口:DVP、MIPI[通俗易懂]

    嵌入式–接口(一)Camera接口:DVP、MIPI[通俗易懂]目录DVP接口LVDS接口MIPI接口CSI接口DVP接口sensor接口之DVP DVP(DigitalVideoPort)是传统的sensor输出接口,采用并行输出方式,d数据位宽有8bit、10bit、12bit、16bit,是CMOS电平信号(重点是非差分信号),PCLK最大速率为96MHz,接口如下图:PCLK:pixelclock,像素时钟,每个时钟对应一个像素数据;HSYNC:horizonalsynchronization,行同步信号VSYNC:vertical

    2022年5月9日
  • golang2022.1 激活吗(注册激活)

    (golang2022.1 激活吗)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~B…

    2022年3月31日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号