TCP的应用编程服务器端重要笔记

 1                         TCP的应用编程服务器端重要笔记
 2 1. TcpListener类用于侦听和接受传入的连接请求。
 3    TcpClient类用于提供本地主机和远程主机的连接信息。

 4 2.TcpClient类
 5  主要用于编写客户端程序,且需要直接利用构造函数创建TcpClient对象。
 6  构造函数有四种重载形式
 7  TcpClient()
 8  TcpClient(AddressFamily family)
 9  TcpClient(IPEndPoint iep)
10  TcpClient(string hostname,int port)
11 (1)TcpClient():
12     /-------该构造函数创建一个默认的TcpClient对象,并自动分配本机(客户端IP地址和端口号。---------/
13     TcpClient tcpClient=new TcpClient();
14 tcpClient.Connect("www.abcd.com", 51888);
15
16 (2)TcpClient(AddressFamily family):
17      /------AddressFamily枚举指定使用哪种网络协议。-------/
18      TcpClient tcpClient = new TcpClient(AddressFamily.InterNetwork);
19      tcpClient.Connect("www.abcd.com", 51888);
20
21 (3)TcpClient(IPEndPoint iep):
22      /------该构造函数的参数iep指定本机(客户端)IP地址与端口号。当客户端有一个以上的IP地址时,而且程序员希望直接指定使用的IP地址和端口号,可以使用这种方式。如果使用这种方式--------/
23      IPAddress[] address = Dns.GetHostAddresses(Dns.GetHostName());
24      IPEndPoint iep = new IPEndPoint(address[0], 51887);
25      TcpClient tcpClient = new TcpClient(iep);
26      tcpClient.Connect("www.abcd.com", 51888);
27
28 (4)TcpClient(string hostname,int port)
29   /-------  这是使用最方便的一种构造函数。参数中的hostname表示要连接到的远程主机的DNS名,port表示要连接到的远程主机的端口号。该构造函数会自动分配最合适的本地主机IP地址和端口号,并对DNS进行解析,然后与远程主机建立连接---------/
30    TcpClient tcpClient = new TcpClient("www.abcd.com", 51888);
31 

32 3.TcpClient对象中的GetString()方法可以获得NetworkStream对象
33   例如:this.client = client;
34         NetworkStream networkStream = client.GetStream();
35 而在服务器与客户之间的传输数据要用到NetworkStream对象
36   例如:  public BinaryReader br;
37           public BinaryWriter bw;
38           br = new BinaryReader(networkStream); /*以上是user类当中的成员变量和构造方法当
39           bw = new BinaryWriter(networkStream);   中的代码*/
40          String receiveString=null;
41          //这里的user对象是TcpListener对象创建后,调用start()方法和AcceptTcpClient()方法获得连接到服务器的TcpClient的对象,具体操作在TcpListener知识点的时候具体阐述
42          receiveString=user.br.ReadString();//从网络流中读出字符串,此方法会自动判断字符串长度前缀,并根据长度前缀读出字符串
43 

44 4.调用string的静态方法Format可以设置输出的格式
45   例如:AddItemToListBox(string.Format("开始在{0}:{1}监听客户连接", localAddress, port));
46 

47 5.String类型的对象的Split()方法可以分解字符串中指定的分割符,分割成几个字符串
48   例如:string [] splitString=receiveString.Split(‘,’)//把receiveString字符串按逗号分离开来全部存入string类型的数组当中
49   例如:string command = message.Split(‘,‘)[0].ToLower();//字符串message以逗号分割成几个子字符串,取第一个子字符串?????????????????
50 

51 6.String类的对象的Substring(int i)方法可以提取出下标为i至末尾的子字符串
52   例如:string talkString = receiveString.Substring(splitString[0].Length + splitString[1].Length + 2);
53 

54 7.TcpListener对象的创建和使用:
55  TcpListener myListener;
56  myListener = new TcpListener(localAddress, port);
57  myListener.Start();//staty()函数开始监听
58  TcpClient newClient = null;
59  newClient = myListener.AcceptTcpClient();//在服务器中,TcpClient对象必须要用 AcceptTcpClient();方法获取
60  myListener.Stop();//这是停止监听时的代码举例
61  

62 8.Thread线程的概念和使用:
63 (1)服务器监听操作需要建立一个线程;
64 (2)服务器在监听操作的线程中,如果有客户端连接则再创建一个线程用于处理与对应用户的交互
65 (3)Thread的使用举例:
66 例如:Thread myThread = new Thread(ListenClientConnect);
67       myThread.Start();
68 //在上述的使用当中Thread构造方法中的参数ListenClientConnect是一个方法的指针,即方法的名字,若该方法无参数,则如上述所示创建线程
69 例如:Thread threadReceive = new Thread(ReceiveData);
70       threadReceive.Start(user);
71 //这是在ReceiveData中有参数的情况,只能在Start()方法中输入对应的参数
时间: 2024-10-11 08:22:25

TCP的应用编程服务器端重要笔记的相关文章

TCP/IP 网络编程 (抄书笔记 2) -- UDP

TCP/IP 网络编程 (抄书笔记 2) – UDP TCP/IP 网络编程 (抄书笔记 2) – UDP Table of Contents server client connect 来源: <TCP/IP 网络编程> 抄书: TCP 协议若要向 10 个客户端提供服务, 除了需要 listen 套接字外, 还需要 10 个服务器端套接字 (accept), 但是在 UDP 中, 不管是服务器端还是客户端都只需要 1 个套接字 udp 的 client 不需要 bind, 调用 sendt

TCP/IP 网络编程 (抄书笔记 5) -- select 和 IO 复用

TCP/IP 网络编程 (抄书笔记 5) – select 和 IO 复用 TCP/IP 网络编程 (抄书笔记 5) – select 和 IO 复用 利用 fork() 生成子进程 可以达到 服务器端可以同时响应多个 客户端的请求, 但是这样做有缺点: 需要大量的运算和内存空间, 每个进程都要有独立的内存空间, 数据交换也很麻烦 (IPC, 如管道) IO 复用: 以太网的总线结构也是采用了 复用技术, 如果不采用, 那么两两之间就要直接通信 网络知识 int server_sock; int

TCP/IP 网络编程 (抄书笔记 1) -- TCP

TCP/IP 网络编程 (抄书笔记 1) – TCP TCP/IP 网络编程 (抄书笔记 1) – TCP Table of Contents server client 更好的 client 端实现 来源: <TCP/IP 网络编程> 抄书: 通信的双方都各自 拥有 输入缓存和输出缓存 socket 的 write 函数并不是立即传输数据, 而是写到输出缓存区, 到达另一端的输入缓存区 socket 的 read 函数调用的瞬间, 就从输入缓存区中读取数据 TCP 协议中的滑动窗口会保证 数

TCP/IP 网络编程 (抄书笔记 4) -- 管道: 进程间通信

TCP/IP 网络编程 (抄书笔记 4) – 管道: 进程间通信 TCP/IP 网络编程 (抄书笔记 4) – 管道: 进程间通信 int fds[2]; pipe(fds); write(fds[1], buf, strlen(buf)); read(fds[0], buf, BUF_SIZE); 如果两个进程的通信只是 单纯的一方写, 然后另一方读 的情况, 那么 我们的管道操作没有问题, 但是: char str1[] = "str1"; char str2[] = "

TCP/IP 网络编程 (抄书笔记 3) -- 僵尸进程和多任务并发服务器

TCP/IP 网络编程 (抄书笔记 3) – 僵尸进程和多任务并发服务器 TCP/IP 网络编程 (抄书笔记 3) – 僵尸进程和多任务并发服务器 Table of Contents 僵尸进程的产生 避免僵尸进程 信号 多任务的并发服务器 僵尸进程的产生 子进程先退出, 父进程没有退出 ==> 僵尸进程 父进程先退出, 子进程没有退出 ==> 子进程被 0 号进程回收, 不会产生僵尸进程 pid_t pid = fork(); if (pid == 0) { // child printf(&

【TCP/IP网络编程】:06基于UDP的服务器端/客户端

本篇文章简单描述了UDP传输协议的工作原理及特点. 理解UDP UDP和TCP一样同属于TCP/IP协议栈的第二层,即传输层. UDP套接字的特点 UDP的工作方式类似于传统的信件邮寄过程.寄信前应先在信封上填好寄信人和收信人的地址,之后贴上邮票放进邮筒即可.当然信件邮寄过程可能会发生丢失,我们也无法随时知晓对方是否已收到信件.也就是说信件是一种不可靠的传输方式,同样的,UDP所提供的也是一种不可靠的数据传输方式(以信件类比UDP只是通信形式上一致性,之前也以电话通信的方式类比了TCP的通信方式

基于socket的TCP和UDP编程

一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(STream socket)的一种. UDP:用户数据报协议.UDP是一种无连接协议.UDP套接口是数据报套接口(datagram Socket)的一种. 二.TCP和UDP介绍 1)基本TCP客户—服务器服务器 服务器是指在网络环境下运行相应的应用软件,为网上用户提供

Java TCP/UDP socket 编程流程总结

最近正好学习了一点用java socket编程的东西.感觉整体的流程虽然不是很繁琐,但是也值得好好总结一下. Socket Socket可以说是一种针对网络的抽象,应用通过它可以来针对网络读写数据.就像通过一个文件的file handler就可以都写数据到存储设备上一样.根据TCP协议和UDP协议的不同,在网络编程方面就有面向两个协议的不同socket,一个是面向字节流的一个是面向报文的. 对socket的本身组成倒是比较好理解.既然是应用通过socket通信,肯定就有一个服务器端和一个客户端.

《TCP/IP网络编程》

<TCP/IP网络编程> 基本信息 作者: (韩)尹圣雨 译者: 金国哲 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115358851 上架时间:2014-6-19 出版日期:2014 年6月 开本:16开 页码:1 版次:1-1 所属分类:计算机 > 计算机网络 > 网络协议 > TCP/IP 更多关于>>><TCP/IP网络编程> 编辑推荐 为初学者准备的网络编程 本书涵盖操作系统.系统编程.TCP/IP协议等多种