TCP服务器和客户端_Socket编程
TCP服务器
- 服务器启动文件
1 import java.io.IOException;
2 import java.net.ServerSocket;
3 import java.net.Socket;
4
5 public class MyServer {
6
7 public static void main(String[] args) {
8
9 ServerSocket serverSocket = null;
10 Socket socket = null;
11
12 try {
13
14 //创建服务器套接字ServerSocket,并绑定服务器端口号,port:1-65536,>1024
15 serverSocket =new ServerSocket(9999);
16
17 while(true) {//可以响应多个各户端
18 System.out.println("服务器开始运行....");
19 //阻塞等待客户端
20 socket = serverSocket.accept();
21
22 //开启线程响应客户端,并将通信套接字socket转入子线程
23 new MyServerThread(socket).start();
24 }
25
26 } catch (IOException e) {
27
28 e.printStackTrace();
29
30 }finally {
31 //完成或者异常时,关闭套接字
32 try {
33
34 socket.close();
35 serverSocket.close();
36
37 } catch (IOException e) {
38
39 e.printStackTrace();
40
41 }
42
43 }
44
45 }
46 }
- 服务器线程文件
1 import java.io.IOException;
2 import java.io.InputStream;
3 import java.io.OutputStream;
4 import java.net.Socket;
5
6 public class MyServerThread extends Thread{
7
8 private Socket socket = null;
9 private InputStream in;
10 private OutputStream out;
11
12 public MyServerThread(Socket socket) {
13
14 this.socket = socket;
15
16 //客户端IP
17 String ip = socket.getInetAddress().getHostAddress();
18 int port = socket.getPort();
19 System.out.println("IP:" +ip +"port:"+port);
20 }
21
22 //发送和接收数据
23 @Override
24 public void run() { //响应客户端(数据收发)
25
26 try {
27 //获取输入输出流
28 in = socket.getInputStream();
29 out = socket.getOutputStream();
30
31 while(true) {//多次
32 //登陆协议 loginnamehellopass123456end
33
34 byte []b = new byte[32];//用于存放read到的数据流
35 in.read(b);//读取数据并存放到b数组中
36
37 String data = new String(b);//将字节流转为字符串
38
39 //读取数据解析登陆信息
40 String logo = data.substring(0,5);//login标志
41 String name = data.substring(data.indexOf("name")+4,data.indexOf("pass"));//data.indexOf("name")返回n的下标
42 String pass = data.substring(data.indexOf("pass")+4,data.indexOf("end"));//data.indexOf("name")返回n的下标
43
44 String msg ="";
45 if (logo.equals("login")) {//登陆?
46 if (name.equals("hello")) {
47 if (pass.equals("123456")) {
48 msg += "登录成功";
49 }
50 else {
51 msg += "密码错误";
52 }
53 }
54 else {
55 msg += "用户不存在";
56 }
57 }
58 else {
59 msg += "输入错误";
60 }
61
62 out.write(msg.getBytes());//将字符串转为字节数组发送到客户端
63 out.flush();
64
65 }
66 } catch (IOException e) {
67
68 e.printStackTrace();
69
70 }finally {
71
72 //g关闭流和套接字
73 try {
74
75 in.close();
76 out.close();
77 socket.close();
78
79 } catch (IOException e) {
80
81 e.printStackTrace();
82
83 }
84 }
85 }
86 }
TCP客户端
1 import java.io.IOException;
2 import java.io.InputStream;
3 import java.io.OutputStream;
4 import java.net.Socket;
5 import java.util.Scanner;
6
7 public class MyClient {
8
9 public static void main(String[] args) {
10
11 Socket socket = null;
12 InputStream in = null;
13 OutputStream out = null;
14
15 try {
16 //1.创建通信套接字,并绑定IP和PORT
17 socket = new Socket("127.0.0.1", 9999);//127.0.0.1 B/C都在
18
19 //2.获取输入输出流
20 in = socket.getInputStream();
21 out = socket.getOutputStream();
22
23 Scanner input = new Scanner(System.in);//从控制台获取数据
24
25 while(true) {//循环发送和接收消息
26
27 String msg = input.next();
28
29 //fa
30 out.write(msg.getBytes());
31 out.flush();
32
33 //收
34 byte []b = new byte[32];
35 in.read(b);
36 String data = new String(b);
37 System.out.println(data.trim());//装不满时去空隔
38
39 }
40
41
42 } catch (IOException e) {
43 e.printStackTrace();
44 }finally {
45 try {
46 out.close();
47 in.close();
48 socket.close();
49 } catch (IOException e) {
50 e.printStackTrace();
51 }
52
53 }
54
55
56 }
57 }
运行效果
- 运行服务端
- 运行客户端后服务器获得信息
- 客户端操作以及对应的服务端响应结果
TCP服务器和客户端_Socket编程的更多相关文章
- Python 绝技 —— TCP服务器与客户端
i春秋作家:wasrehpic 0×00 前言 「网络」一直以来都是黑客最热衷的竞技场.数据在网络中肆意传播:主机扫描.代码注入.网络嗅探.数据篡改重放.拒绝服务攻击……黑客的功底越深厚,能做的就越多 ...
- python socket之tcp服务器与客户端demo
python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...
- Linux系统编程(32)—— socket编程之TCP服务器与客户端
TCP协议的客户端/服务器程序的一般流程 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后, ...
- 【卷二】网络二—TCP服务器与客户端
经过上回简单地介绍,大家对服务器多少应该清楚一些了吧!还记得TCP: (Transmission Control Protocol) 传输控制协议? 还记得IP: (Internet Protocol ...
- Node学习笔记:建立TCP服务器和客户端之间的通信
结构: socket是应用层和传输层的桥梁.(传输层之上的协议所涉及的数据都是在本机处理的,并没进入网络中) 涉及数据: socket所涉及的数据是报文,是明文. 作用: 建立长久链接,供网络上的两个 ...
- python写一些简单的tcp服务器和客户端
代码贴上,做个记录 TcpClient # -*- coding:utf-8 -*- import socket target_host = "127.0.0.1" #服务器端地址 ...
- c++ tcp 服务器和客户端例子
目标: 完成一个精简TCP服务器,可接收来自多个用户的请求,并返回结果. 思路: (1)服务器 C++ TCP服务器的实现主要由以下几个函数来完成: a)socket ...
- socket | tcp客户端 tcp服务器 udp客户端 udp 服务器 创建方法
tcp服务器 #coding=utf-8 ''' 这里是tcp服务器端,要先启动 ''' import socket import threading bind_ip = "0.0.0.0& ...
- Linux系统编程(34)—— socket编程之TCP服务器与客户端的交互
前面几篇中实现的client每次运行只能从命令行读取一个字符串发给服务器,再从服务器收回来,现在我们把它改成交互式的,不断从终端接受用户输入并和server交互. /* client.c */ #in ...
随机推荐
- jQuery mobile网格布局
3.4 内容格式化 jQuery Mobile中提供了许多非常有用的工具与组件,如多列的网格布局.折叠形的面板控制等,这些组件可以帮助开发者快速实现正文区域内容的格式化. 3.4.1 网格布局 jQu ...
- 测试Kaggle kernel commit 是否会删除以前的output
在kaggle上创建kernel,加入如下代码. 连续运行两次,可以看到保存的文件名字不一样,且无论运行错少次,都只有一个输出文件. 这说明,kaggle上的kernel每次commit运行,都会清空 ...
- Mac shell 调节音量
$ osascript -e 'get volume settings' $ osascript -e 'output volume of (get volume settings)' $ osasc ...
- Tensorflow之TFRecord的原理和使用心得
本文首发于微信公众号「对白的算法屋」 大家好,我是对白. 目前,越来越多的互联网公司内部都有自己的一套框架去训练模型,而模型训练时需要的数据则都保存在分布式文件系统(HDFS)上.Hive作为构建在H ...
- noip模拟30
\(\color{white}{\mathbb{缀以无尽之群星点点,饰以常青之巨木郁郁,可细斟木纹叶脉,独无可极苍穹之览,名之以:密林}}\) 看完题后感觉整套题都没什么思路,而且基本上整场考试确实是 ...
- Toast控件
------------恢复内容开始------------ 四种常见的App弹窗设计:Toast.Dialog.Actionbar 和 Snackbar 弹窗又称为对话框,是App与用户进行交互的常 ...
- 为何GRE可以封装组播报文而IPSEC却不行?
Author : Email : vip_13031075266@163.com Date : 2021.01.24 Copyright : 未经同意不得 ...
- Stream流方法引用
一.对象存在,方法也存在,双冒号引用 1.方法引用的概念: 使用实例: 1.1先定义i一个函数式接口: 1.2定义一个入参参数列表有函数式接口的方法: 1.3调用这个入参有函数式接口的方法: lamb ...
- 隐私安全设置:NET:ERR_CERT_AUTHORITY_INVALID message in Chrome.
背景 访问一个内部网站时,遇到下面的问题,导致网站不能打开:NET:ERR_CERT_AUTHORITY_INVALID message in Chrome.从错误信息来看,这是由于网站的证书问题导致 ...
- tcpdump使用手册
tcp使用手册 格式: tcpdump [选项] [过滤条件] 选项: -i eth0 #网卡接口 -A #以ASCII码格式阅读 -w file #下载抓取的数据包 -r file #上传数据包 - ...