如何检测TCP连接是否成功,或者已经连接成功

如何检测TCP连接是否成功,或者已经连接成功,第1张

这个啊,我简单的说一下。

首先,编程的话,在windows环境下,肯定用的是winsock来编写网络程序。

如何检测客户端和服务端连接成功

肯定是用服务端首先bind,在listen,然后调用个循环accept,当客户端connect的时候,就开一个线程来服务。accept能返回一个sock值,而不是invaid_socket,那肯定就代表连接成功的啦。

断线处理

断线的话,必须得有一段send数据后,发现没有返回,那么程序就知道断线了。至于如何检测,可以设置一定的时间间隔,发送检测数据包,没有断线的话,有返回值,可以发送,断线的话,程序就知道了。

具体的编程和思路,你还是找本书看吧,不知道你用的什么语言编写的,不过估计在windows环境下都差不多。可以看下老罗的《windows环境下32位汇编语言程序设计》里面有个聊天室的案例,讲的蛮清楚的。虽然是汇编的,但是都是相通的,你应该看得懂。

1写出下列程序段执行的结果,(AL)= (DL)=

并指出此程序段完成的是什么功能?

MOV CL, 4

MOV AL, 87d=57H

MOV DL, AL

AND AL, 0FH

OR AL, 30H

SHR DL, CL

OR DL, 30H

(AL)=37H (DL)=35H

程序段完成功能是:把AL中的16进制数高位送DL,移位取出低位,

再分别转化为对应的ASCII码

2假定DS=2100H,BX=0100H,SI=0002H;

[21100H]=12H,[21101H]=34H,[21102H]=56H,[21103H]=78H。

2100:100H=12H,34H,56H,78H

分析下列指令执行后寄存器的内容。

(1) MOV AX,[101H] ;ax=5634H

(2) MOV AX,[BX+2] ;ax=[0102H]=7856H

(3) MOV AL,[BX][SI+1] ;al=[0103H]=78H

(4) MOV AX,100H[SI] ;ax=[0102H]=7856H

3识别下列指令正确与否,对错误指令,说明出错的原因。

(1) MOV DS,100 × ;数据段不允许用立即数赋值

(2) MOV [1000H],23H ×;立即数送入内存需指明是字还是字节

(3) MOV [1000H],[2000H] ×;源和目标不能同为内存数

(4) MOV DATA,1133H ;如用DATA定义过数据段,DATA就不能再用作变量名

(5) MOV 1020H,DX ×;目标不能是立即数

(6) MOV AX,[0100H+BX+BP] ×;寻址时,BX、BP只能用一个

(7) MOV CS,AX ×;CS不能直接赋值

(8) PUSH AL ×;堆栈不能压入字节,只能压入字(32位压入双字)

(9) PUSH WORD PTR[SI] √

(10) IN AL,378H ×;端口寻址大于0FFH,端口号源要放入DX

(11) OUT 80H,AX √

(12) MOV CX,[AX+SI]×;AX不能用于内存寻址

16位DOS下编程:

《ibm-pc汇编语言程序设计(第2版)》清华大学出版社。沈美明 著

《汇编语言》 王爽 著

《ibm-pc汇编语言程序设计(第5版)》人民邮电出版社。Peter Abel 著 沈美明 温冬婵 译

32位Windows下编程:

Intel汇编语言程序设计(第五版)

如果没接触过汇编语言,那么建议从16DOS下的编程开始学起,那是汇编语言的基础。强烈推荐《ibm-pc汇编语言程序设计(第2版)》清华大学出版社。沈美明 著 这本书讲的非常专业,但是非常难啃,如果你没有足够的兴趣,那么你是很难静下心来完完整整看完这本书的。如果你都吸收消化了,恭喜你,你已经很好的掌握了汇编语言。

如果你想快速上手,不想学的那么太仔细,可以从王爽的那本书学起,他写的书和大学教材截然不同,有外国人的风范。读起来通俗易懂,很容易让你理解。

第三本书是国外的经典教材,实用性比较强,不过不建议初学看,因为基础的东西他讲的不多,像那些概念的东西他都是一笔带过,重要的是上机 *** 作和实际应用(这也许就是国内与国外教材最大的差别吧)

至于32位的windows编程纯属你的爱好了,逆向工程和黑客的必须要掌握他。

朋友,我来告诉你吧,看你给的分多的面子上,说的详细点。1 先大概看看C,(记住是大概),了解一下高级语言的编程技巧。2 然后学习汇编语言(16位和32位都要学,先学16位,然后学32位,32位就是你说的win32汇编),因为汇编语言是很多相关课程(比如数据结构, *** 作系统,微机原理)等的重要基础,这一点不用多讲,等你学完汇编之后,你就会建立起计算机最底层的编程意识,因为汇编语言是针对机器的语言。。。。如果从事计算机科学研究的话,汇编语言是必不可少的,语言因很简单,因为汇编语言是面向机器的(这点你开始学习以后就会体会到),,我们每天工作的平台都是机器,不会机器语言(汇编语言)行吗??就好比我们想出国不会英语一样,行吗?? 3 然后深入的学习C 4 你少了一门课程,就是微机原理。数据结构,微机原理, *** 作系统这三门课程的先后为 微机原理----- *** 作系统-------数据结构,因为"微机原理"是一些硬件知识+汇编,所以要在" *** 作系统"之前看,为 *** 作系统打基础。数据结构是纯软件的东西,和其他两门不分先后,不过数据结构稍微难一点,可以在那两门之后看。5------把win32程序设计放到最后 。。。。。。。。。。。希望能对你有帮助,纯手打。。给分!!

1将AX中的值以十六进制形式显示。

要求:主程序利用寄存器把AX的值传送给子程序。

在子程序中将AX中的值以十六进制形式显示。

=====================================

DATA SEGMENT

D1 DW 13276 ;数: 0~65535

DATA ENDS

;------------------------------

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START:

MOV AX, DATA

MOV DS, AX

;------------------------------

MOV AX, D1 ;取来数字

CALL DISP_AX

MOV DL, 'H'

MOV AH, 2

INT 21H ;输出H

;------------------------------

MOV AH, 4CH

INT 21H ;返回DOS

;------------------------------

DISP_AX:

MOV BX, 16 ;16进制,要除16

MOV CX, 4 ;求4位16进制数

ABC:

CWD ;将AX扩展到DX

DIV BX

PUSH DX ;保存余数到堆栈

LOOP ABC

MOV CX, 4 ;显示4位

ASD:

POP DX

CMP DL, 10

JB A48

ADD DL, 7

A48:

ADD DL, 48

MOV AH, 2

INT 21H ;输出

LOOP ASD

RET

;------------------------------

CODE ENDS

END START

===========================

2编写子程序,完成的功能是将DL中的2位十六进制数转换为对应ASCII码。

说明:入口参数AL=待转换的2位十六进制数

出口参数DX=转换后的ASCII码,(高字节对应高位、低字节对应低位)

举例:若AL=2AH,则DX=3241H。

0----9转换为30H----39H +30H

A---F转换为41H----4FH +30H+7H

;------------------------------

AL_ASC_DX:

MOV AH, 0 ;要除16

MOV CL, 16 ;求16进制数

DIV CL

CMP AL, 10

JB A48

ADD AL, 7

A48:

ADD AL, 48

MOV DH, AL

CMP AH, 10

JB A482

ADD AH, 7

A482:

ADD AH, 48

MOV DL, AH

RET

;------------------------------

以上就是关于如何检测TCP连接是否成功,或者已经连接成功全部的内容,包括:如何检测TCP连接是否成功,或者已经连接成功、汇编语言程序设计习题、有没汇编的教材啊,推荐几本。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9274155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存