TCP编程

<TCP编程API-1>

笔记

欲速则不达,建议先完成 的任务!

继续学习

通关时间从学习第1个课程开始计时

9天内通关,可获得赏金100元

开始学习
该课程需要登录后才能观看
3400 位同学正在学习! 查看详情

zhengzheng

老师,我详细看了一下客户端代码,发现只有线程的创建,没有线程的回收

在调用pthread_create(&tid, NULL, (void *)cli_data_handle, (void *)&newfd);函数,线程被创建,但是后面一直都没有线程回收的过程,只有在循环结束的时候,调用close来关闭套接字文件,也许我的理解有问题吧

BigBaby

客户端写数据到不了服务器端,服务器端却能采集到自己的stdin,怎么回事?

两端程序都启动后,显示了连接成功,但客户端写数据到不了服务器端(没写进socket?),但服务器端stdin却能采集到(服务器端输入后有客户端输入的效果)(服务器端没有收集stdin的函数)。

深圳-谢筱-嵌入式

2

回答

老师,ntons是函数吗?

zhengzheng回复:

ntohs可以看成是n to h s,n代表net(网络字节序),h代表(host)本地字节序,s代表short

何旭孔

1

回答

read函数里面指定读的大小有要求吗?

吴老师回复:

可以使用 bufsize 的。 -1 是为了给 读到的字符串 留一个 \0 的空间。 

何旭孔

2

回答

金稀红

1

回答

newfd = accept(fd, NULL,NULL)

杨老师回复:

这两个NULL表示的意思是,客户端连接进来,我们不保存客户端的信息。

金稀红

1

回答

ret < 0 &&EINTR==errno

韩hyr回复:

如果在读的过程中遇到了中断则read()应该返回-1,同时置errno为EINTR。出现这种错误号表示还没有读完,需要重新再读,说以需要判断下错误号。

alucard

1

回答

socket之后,出错的资源释放问题

吴老师回复:

是的 , 需要释放 资源的 

梦醉天宇

1

回答

为啥客户端定义的端口号是5001,服务器端收到的不是5001

吴老师回复:

5001 是服务端的监听端口号, 客户端跟服务器端建立连接是需要呼叫监听端口号(5001),当服务端accept之后,就会给客户端单独新建一个连接端口号,(44639

流风回雪

1

回答

作业问题

集团总部-周凯回复:

具体那部分的代码,可以把你执行的结果,截图一起提交作业。

闫奥博

1

回答

老师程序中BUFSIZ这个宏定义在哪里头文件里?因为文件中并没有定义这个

杨老师回复:

利用ctags可以查看:

1--生成索引文件

      cd   /usr/include

      sudo   ctags  -R

2--查找内容BUFSIZ

       vi  -t   "BUFSIZ"

3--继续跟进内容

       把光标放在你要查找的内容出

        ctrl  +  ]     向下一级内容追踪

        ctrl  +  t     回到上一级内容

4--退出

        q

如果只能在/usr/include下才能执行,请配置.vimrc文件,在文件末尾加set tags+=/usr/include/tags


闫奥博

1

回答

图片上cilent是在read为什么你写的程序中,client是在写数据到服务器。

小灰灰回复:

你可以在群里问一下,这样问的问题不太清楚具体是什么,哈哈,继续加油

David

1

回答

ntons,为什么不是ntoh?

XCK04000003回复:

你下来查一查这两个函数的功能就知道了

David

1

回答

老师,int fd = -1,代表什么意思,为什么要-1?

韩hyr回复:

初始化一个非文件描述符的数值,因为0,整数是用来表示一个文件的文件描述符。

南鸢下的守候

1

回答

服务器的IP地址,该怎么设置?

韩hyr回复:

嗯,是运行服务器代码的IP

南鸢下的守候

1

回答

远程登录的软件在哪里?怎么用的

小灰灰回复:

远程登录Ubuntu吗?可以用xshell,putty,securecrt,配置都是比较简单的,你可以了解一下,继续加油

好好学习天天向上

1

回答

标准输入

小灰灰回复:

你判断一下返回值看一下,你的程序退出了应该是

亮出你的风采

1

回答

读函数

杨老师回复:

后面的if是循环之后,因为跳出循环有两种可能,ret < 0 和ENIR ==error,我们判断下是不是前者,read函数调用失败跳出的。

亮出你的风采

1

回答

socket

杨老师回复:

这里是为了显示出错的情况,我们可以判断它是-1还是大于0的数来区别是否调用成功。

李新强

1

回答

读写部分read函数问题?

吴老师回复:

因为还有一个 结束字符  '\0'  表示字符串的结束

王豫新

1

回答

结构体

杨老师回复:

对于我们进程间通信方式,学习的顺序个人建议是原理->编写流程->需要的函数->函数的功能、参数、返回值,这样从大到小学完,自己的知识是站的高度更高,并且我们函数那么多,以后必定会遇到自己没有见过的函数,见到之后我们要学会自己man、查阅资料,得到它的功能、参数、返回值。即使学过的也可能会忘记我们的功能、参数、返回值,那到时候我们也需要查阅资料。

罗龙少

1

回答

老师,请问作业中readme是什么?

小灰灰回复:

作业中的readme就是将你的编译过程,调试记录存放到readme文件中,作业要求中写的很清楚,还是不清楚的话可以在群内问一下对应的辅导老师

磊嘻嘻

1

回答

connect refuse 怎么 解决的 ?

韩hyr回复:

拒绝连接,先检查代码有没有问题,端口开放没有,或者协议是否使用错误。

望舒霄河

1

回答

请问INADDY_ANY是在哪个头文件中定义的?

韩hyr回复:

拼写错了吧,INADDR_ANY


打打

2

回答

所填IP是服务器自己的IP吗?

网络编程

金稀红回复:

tcp

张繁

3

回答

关于笔记的问题

张繁回复:

好的,谢谢老师。

姜正亚

1

回答

在小窗口写代码看起来很麻烦

helen回复:

同学找我(小美老师)。

WHQ16101000027

1

回答

请问通用结构体sa family 是2个字节,不懂

答疑讲师回复:

unsigned short sa_family,是两个字节,地址族,一般为AF_***表示

155****8092

1

回答

C++要实现网络编程的话,那该如何编写

答疑讲师回复:

c++的话不属于我们的课程体系哦,不过建议首先熟悉相关socket api,因为实质上的原理都是一样的,只不过工具有差异罢了:D

CDQ072000029

2

回答

NJQ061000001

1

回答

为什么非要定义一个sockaddr_in的结构体再来强制类型转换

答疑老师回复:

struct sockaddr是通用的套接字地址形式,而不同的网络体系表示地址的方法是不同的;
struct sockaddr_in是在通用的套接字地址形式的基础上,针对TCP/IP设计的套接字的地址形式,里面多了两个成员,也就是IP号和端口号,这样方便我们填充。

上次保存笔记

看见好看好看就很快很快就会看见

保存 修改