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 ...
随机推荐
- Spring笔记(4)
集成Web环境 1.步骤 导入Spring-web坐标 <!-- spring-web--> <dependency> <groupId>org.springfra ...
- 基于Linux系统下Apache服务器的安装部署
企业中常用的web服务,用来提供http://(超文本传输协议). web系统是客户端/服务器模式的,所以应该有服务器和客户端里两个部分.常用的服务器程序时Apache,常用的客户端程序是浏览器.ww ...
- git clone 设置临时的 proxy
export ALL_PROXY=socks5://127.0.0.1:1086 git clone --depth 1 https://github.com/xxx/xxx.git unset AL ...
- Mysql常用sql语句(10)- is null 空值查询
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 is null是一个关键字来的,用于判断字段的值 ...
- 关于FeignClient上的RequestMapping不能生效的问题
问题 我有两个FeignClient共同继承了一个接口,两个Client有各自不同的url实现,其中一个需要加上类似于@RequestMapping作用在类上的效果,因为@RequestMapping ...
- visual studio下载速度为0解决方法
步骤: 一,更改网络设置 二,cmd刷新dns 一,更改网络设置 1,点开控制面板,打开网络和Internet 2,点击网络和共享中心 3,点击你连接的网络,那个是你连接的WIFI名字 4,点击属性 ...
- windows环境下永久修改pip镜像源的方法
在windows环境下修改pip镜像源的方法 (1)在windows文件管理器中,输入 %APPDATA% (2)会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pi ...
- 图论---DFS
图论---DFS 1. 图的遍历 在理解DFS算法之前,我们首先需要对什么是遍历进行了解,遍历的概念就是:从某一个点出发(一般是首或尾),依次将数据结构中的每一个数据访问且只访问一遍. 2. DFS简 ...
- Python爬无止境,获得王者荣耀全部高清皮肤
作为一名热爱王者两年的程序员,早就想爬取所有英雄皮肤的高清照片,在设个幻灯片放映,真香,这次只用16行代码就能实现,对于新手拿这个作为实战练手项目既简单又容易上手,快来尝试下. 百度"王者荣 ...
- TS基础笔记
TS优势 更好的错误的提示,开发中及时发现问题:编辑器语法提示更完善:类型声明可以看出数据结构的语义,可读性更好; TS环境搭建 1.安装node;2.npm install typescript@3 ...