RPC&Socket通信

来源:互联网 发布:c与java的区别 编辑:程序博客网 时间:2024/05/17 02:36

RPC

Linux下的RPC主要是同rpcgen XXX.x文件自动生成客户端和服务器端的代码,自动生成代码时主要碰到了一些问题。

1.字符串参数传递的问题在RPC下char* p;并不解释成字符串指针,而是解析成指向字符的指针。要传递字符串,则可以通过string p<>;这种方式进行传递,<>表示字符串中字符个数不受限制,这个一开始折腾了挺久的。

2.Linux下的RPC可以同rpcgen -M 加入线程安全的机制,但是好像没有一个客户调用请求过来时服务器端自动创建一个新的线程或进程自动响应客户端的请求的参数(-A),要实现这个功能的话,估计要自己写服务器端的程序代码了。

3.Linux下写socket通信,其实写的功能也没什么,发现了一个比较奇怪的问题,服务器端fork()子进程,在子进程中close(client_fd);试图去关闭服务器端accept()返回的套接字时居然会无效,无法关闭这个套接字文件描述符,这个还望高人指点。

4.rpcgen  自动生成客户端、服务器端的makefile文件参数是:rpcgen -Sm XXX.x;

这次的课程实验遇到的问题,就是在多线程环境下要主要对全局变量的使用,以及指针字符串的引用问题;本次使用还发现了比较好用的两个函数:sscanf();sprintf()对于在c下提取参数有很好的作用,非常强大;

在本次实验,发觉linux下的gdb调试功能相当强大,可以学些一下《软件调试的艺术》,争取能更熟练的使用gdb;

在vim下写C/C++刚开始感觉非常的痛苦,主要是一开始没有配置Vim对c/c++的自动补全功能,导致每个函数、变量都得反复的翻查使用;这块写的代码还是少了;配置了ctags、superTabComplete这些插件后,感觉编码变得顺畅多了,还有个autocomplete插件,这个貌似在ubuntu 12.04下没有配置成功,vim的版本是v73的,估计这个插件目前还没支持这个版本;

在vim下使用分屏等功能进行编辑可以加快代码的编写;相当好用;

对于vim插件的安装:主要在~/.vim目录下,用户自己有自己的vimrc配置文件,/etc/vim/vimrc下面有个全局的配置,代码自动缩进等配置还是很有用的;

对VIM目前还需要更多的学习才能熟练掌握。。。