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


相关推荐

  • 2019最新三年php 面试题[通俗易懂]

    2019最新三年php 面试题[通俗易懂]什么是composer?以及composer是干什么用的?工作原理 PHP如何实现静态化 你了解设计模式吗?说下你最常用的设计模式 观察者模式是如何实现的?工厂模式是如何实现的?适配器模式是如何实现的?…… PHP的优化方案 说下你了解的session和cookie 如何实现不基于session和cookie的用户认证。 说下你目前框架所用到的核心概念 什么是CSRF攻击,X…

    2022年8月27日
    3
  • 三层交换机 ospf_三层交换机实验报告

    三层交换机 ospf_三层交换机实验报告03-三层交换机的OSPF实验

    2022年4月21日
    85
  • Ubuntu下cuda卸载

    Ubuntu下cuda卸载由于需要安装cuda8.0,,所以需要卸载cuda7.5. 在/usr/local/cuda/bin 目录下,有cuda 自带的卸载工具uninstall_cuda_7.5.plcd/usr/local/cuda/binsudo./uninstall_cuda_7.5.pl剩下步骤步骤如下:1.安装显卡驱动[cpp] viewplain copysudo apt-get update…

    2025年9月18日
    7
  • 检查网站有没有被挂马_网站在线挂马检测工具

    检查网站有没有被挂马_网站在线挂马检测工具首先,我们来看看网站被挂马的危害性。网站被挂马后,一方面是系统资源,流量带宽资源的巨大损失,另一方面也成为了传播网页木马的“傀儡帮凶”,严重影响到网站的公众信誉度。很多网页木马都是利益驱动,偷盗各类帐号密码,如电子银行帐户和密码、游戏帐号和密码、邮箱帐户和密码、qq/MSN帐号和密码等;另外,使得客户端被安装恶意插件,强迫浏览黑客指定的网站,或者被利用攻击某个站点等。  我们知道了网站被挂马

    2022年9月27日
    3
  • chgrp linux,linux命令chgrp

    chgrp linux,linux命令chgrplinux 命令 chgrpLinuxch 命令用来变更文件或目录的所属群组 Linuxchgrp 命令说明 Linuxchgrp 命令用来改变文件或目录所属的用户组 该命令用来改变指定文件所属的用户组 其中 组名可以是用户组的 id 也可以是用户组的组名 文件名可以是由空格分开的要改变属组的文件列表 也可以是由通配符描述的文件集合 如果用户不是该文件的文件主或超级用户 root 则不能改变该文件

    2025年7月2日
    0
  • Vue(9)购物车练习

    Vue(9)购物车练习购物车案例经过一系列的学习,我们这里来练习一个购物车的案例**需求:**使用vue写一个表单页面,页面上有购买的数量,点击按钮+或者-,可以增加或减少购物车的数量,数量最少不得少于0,点击移除按钮

    2022年7月29日
    8

发表回复

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

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