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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 直接加QQ好友的链接或会话的方法

    出自本博客:qq_2300688967原文链接:https://blog.csdn.net/qq_2300688967/article/details/52162230下面是两种方法,一种直接会话,一种添加好友,只需将本人的QQ改成自己的就行了(1)下面这个代码,可直接临时会话tencent://message/?Menu=yes&uin=2300688967&…

    2022年4月9日
    130
  • 启动ucosii之四OSTaskCreate()[通俗易懂]

    启动ucosii之四OSTaskCreate()[通俗易懂]函数原型来自OS_TASK.C/***********************************************************************************************************                                           CREATEATASK**************

    2025年9月21日
    6
  • 直流电压前馈控制数字逆变电源设计与实现

    直流电压前馈控制数字逆变电源设计与实现引言逆变电源一般采用瞬时反馈控制技术来提高逆变电源的动态响应速度,减少输出电压的谐波含量,改善输出电压波形的质量。常见的逆变电源控制技术,有重复控制、谐波补偿控制、无差拍控制、电压瞬时值控制和带电流内环的电压瞬时值控制等类型[1~4]。其中,带电流内环电压瞬时值环路的双环控制方法因实现简单,系统动态性能优越和对负载的适应性强等优点,而逐渐成为高性能逆变电源的发展方向之一[4]。但传统控制方法是基于逆变电源直流侧输入电压为无脉动直流电压的假定,而实际逆变电源,存在因电网电压波动或负载突变而导致直流侧电压波

    2022年6月11日
    35
  • python循环速度提高_提高python中for循环的速度

    python循环速度提高_提高python中for循环的速度我正在计算从 1 到 10 7 的数字的分区数 我用五边形数定理来实现 它提供了一种计算 n 的划分数的方法 我们称之为 P n P n 1 P n 2 P n 5 P n 7 所以 P n 依赖于不同的 P n x 其中 x 从 1 到 n 总之 长话短说 我使用两个循环 一个从 1 到 10 7 另一个使用 x 的定义 并根据特定的公式计算 正如您可以想象的 代码执行得相当慢 有什么方法可以提高这些 for 循环的速

    2025年10月27日
    7
  • TCP和UDP协议的区别_朋友关系

    TCP和UDP协议的区别_朋友关系在解释两者之间的关系之前,我们必须从宏观的角度了解互联网的整个交互模型。因为当了解互联网在大体上是如何运作时,我们才能了解HTTP和TCP存在的意义,包括他们所要解决的问题是。 (此图来自Udacity的网络协议教程)互联网的模型被分为4层,从上至下每一层都依赖其底层协议。换言之,Application(应用层)的协议操作成功的前提是Transport(运输层)的存在。没有运输层就没有应…

    2026年2月4日
    4
  • 关于SM总线控制器驱动的安装

    关于SM总线控制器驱动的安装没有装SM总线控制器的再设备管理器看起来是这样的:虽然说,这个控制器不装对日常简单应用没有多大影响,但是为了保证计算机的性能,避免在使用过程中出现各种奇怪的问题,不装是不行的。下面开始安装,一般的驱动安装也可遵循此过程。首先解压ATISB600南桥驱动。我的版本是7.8的,解压默认再C:\ATI\********然后打开相应文件夹,如下图:红圈画的就是传说中的控制器驱动文件。…

    2022年6月6日
    108

发表回复

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

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