linux下udp通信的客户端、服务器端的c语言程序 用int argc,char *argv[] 能够输入ip和端口号

linux下udp通信的客户端、服务器端的c语言程序 用int argc,char *argv[] 能够输入ip和端口号,第1张

占个位置,晚上回去给你发,我做的是C语言的socket通信的小程序,我是先创建了一个守护进程,我的守护进程,做的任务就是你所说的中转程序的工作,通信的客户端,先把消息发给守护进程,再由守护进程转发给另一个客户端。

守护进程:

守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。

由于在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才退出。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。

呵呵整一个socket盲

还一上来就要用封装好的mfc类,哀分少啊,帮你说说吧

建立一个新类从casyncsocket

public

派生来,叫

mysock,然后在cxxxdlg的头文件加个变量

mysock

m_socket

然后

cxxxdlg中的initdialog初始化,

m_socket.create(0,sock_dgram)

使用udp恩首先你要考虑到服务器端也是使用udp的协议的,然后就可以调用

m_socket.sendto(buffer,strlen(buffer),3333,"xxx.xxx.xxx.xxx")

3333是服务器等待接收数据的端口,xxx.xxx.xxx.xxx

是服务器的ip,恩域名也可以...如果服务器是tcp的话要用connect连接然后用send方法发送数据,使用完调用close关闭socket,也疴可以不关,类销毁时会自动释放所使用资源,恩至于要等待接收数据,udp需要bind,可以在create的时候就绑定上,而tcp不光要绑定上还要listen监听,tcp有连接来后要用accept接收连接,给它一个新的

casyncsocket,呵呵就说这么点,对了在bool

cxxxapp::initinstance()的初始化函数中添加

if

(!afxsocketinit())

{

afxmessagebox(idp_sockets_init_failed)

return

false

}

还有头文件

#include

<afxsock.h>

//

mfc

socket

extensions

.或者你在创建工程时选择上winsocket,

恩对了csocket是堵塞的套接字,需要同步很强的工作再选择他,一般使用异步的,给分!

这个问题,不是解答过了么?还给你写了一个简洁的,正确的接收函数。

你这个服务器代码,中没有弄清楚数组,字符串及其下标的关系。数组下标一般是从0开始的,string的下标是从1开始的。还有pchar类型的话,如果要是字符串的话,还需要以0为结束,来确定字符串的内容。

所以代码中,copy函数,第一个参数是string的时候,第二个参数,应该从1开始,表示从第一个字符开始。

还有使用动态数组在这里是多余的,直接使用string就可以了。

在edit中你写的FF等,都是以字符串发送的,对方收到的当然也是字符串'FF'


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/319116.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存