linux socket收發結構體

2022-05-03 19:21:08 字數 3810 閱讀 5321

服務端**:

view code

/*

server code in c

*///*

//*date:2012-07-03 //

*author :cplushua //

*服務端傳送結構體資料 //

* //*

#include #include

#include

in.h>#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int main(void

) ;

struct

passwd p;

memset(&p,0x00,sizeof(struct

passwd));

strcpy(p.pw_name,

"testuserser");

strcpy(p.pw_passwd,

"234234");

p.pw_gid=1000

; p.pw_uid=1012

; strcpy(p.pw_shell,

"/usr/bin");

strcpy(p.pw_dir,

"/home/");

char sendbuff[sizeof(struct

passwd)];

memset(sendbuff,

0,sizeof

(sendbuff));

memcpy(sendbuff,&p,sizeof(struct

passwd));

cout

buff copy ok now!

"<

struct

sockaddr_in stsockaddr;

int socketfd =socket(pf_inet, sock_stream, ipproto_tcp);

if(-1 ==socketfd)

memset(&stsockaddr, 0, sizeof(struct

sockaddr_in));

stsockaddr.sin_family =af_inet;

stsockaddr.sin_port = htons(5555

); stsockaddr.sin_addr.s_addr =inaddr_any;

if(-1 == bind(socketfd,(const

struct sockaddr *)&stsockaddr, sizeof(struct

sockaddr_in)))

if(-1 == listen(socketfd, 10

))

cout

<

i am wating client ..............

"<

for(;;)

//注意此處的send的第乙個引數是accept返回的描述

send(connectfd, &p, sizeof(p),0

); cout

<

資料傳送成功!

"<

cout

<

已經傳送的資料

"<

cout

<

使用者名稱:

"cout

<

密 碼:

"cout

<

g i d :

"cout

<

realna:

"cout

<

資料夾:

"cout

<

權 限:

"shutdown(connectfd, shut_rdwr);

close(connectfd);

}close(socketfd);

return0;

}

客戶端**:

view code

/*

client code in c

*//*

*date:2012-07-03

*author :cplushua

*客戶端接收結構體 *

*/#include

#include

#include

in.h>#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int main(void

) ;

struct

passwd p;

//將結構體清零

memset(&p,0,sizeof(struct

passwd));

struct

sockaddr_in stsockaddr;

intres;

//套接字描述

int socketfd =socket(pf_inet, sock_stream, ipproto_tcp);

if (-1 ==socketfd)

//清空

memset(&stsockaddr, 0, sizeof(struct

sockaddr_in));

stsockaddr.sin_family =af_inet;

stsockaddr.sin_port = htons(5555);//

伺服器端口號

res = inet_pton(af_inet, "

211.87.230.12

", &stsockaddr.sin_addr);//

伺服器ip位址**換為網路位元組)

if (0 >res)

else

if (0 ==res)

if (-1 == connect(socketfd, (const

struct sockaddr *)&stsockaddr, sizeof(struct

sockaddr_in)))

//定義乙個與結構體相同大小的buffer

char buffer[sizeof(struct

passwd)];

/*perform read write operations ...

*/memset(buffer,

0x00,sizeof

(buffer));

int readres=read(socketfd,buffer,sizeof

(buffer));

if(readres<0) cout<

資料接收失敗

"<

memcpy(&p,&buffer,sizeof

(p));

cout

<

使用者名稱:

"cout

<

密 碼:

"cout

<

g i d :

"cout

<

realna:

"cout

<

資料夾:

"cout

<

權 限:

"shutdown(socketfd, shut_rdwr);

close(socketfd);

return0;

}

STM32 CAN 配置 收發結構定義 留存

分布式系統專案需要,這次弄個can匯流排來布局,僅見can的冰山一角。本次使用擴充套件幀模式。stm32 對can的定義 庫 can結構體定義 說明 typedef struct can typedef can訊息傳送 can tx message structure definition type...

問題 C 排隊出發 結構體排序

時間限制 1 sec 記憶體限制 128 mb 題目描述 神牛島是傳說中的乙個島嶼,凡是成功到那裡遊歷,完成探險並返回的人,都會成為神牛。但是,現實中卻沒有人知道如何到達神牛島。這天夜裡,篤志者睡著之後,不久就進入了夢鄉。他突然看到有人在問,有人想去神牛島的嗎?神牛島之旅的牌子前,就開始有不少勇士報...

Linux socket 傳輸和接受結構體

linux程式設計 linux socket send and recevie structure 最近在開發乙個linux下的聊天軟體,好久沒有做c語言的開發了,感覺到很多東西已經生疏了,這下又碰到用socket傳遞結構體的問題,google了一下,發現也有不少朋友遇到同樣的問題,所以就打算寫出自...