เบชเบฐโเบเบฒเบโเบเบตโเบเบญเบโเบชเบงเบฒเบ เบเปเบฒเบเบฐเปเบเบปเปเบฒเบชเบฐเปเบซเบเบตเปเบซเปเบเบงเบฒเบกเบชเบปเบเปเบเบเบญเบเบเปเบฒเบเบเบทเปเบก "Linux API. เบเบนเปโเบกเบทโเบเบตเปโเบชเบปเบกโเบเบนเบโเปเบเบโ (เบเบฒเบโเปเบโเบเบฒโเบชเบฒโเบเบญเบโเบเบถเปเบก เบเบฒเบเปเบเปเบเบญเบเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบก Linux). เบกเบฑเบเบชเบฒเบกเบฒเบเบชเบฑเปเบเปเบเปเบขเบนเปเปเบเปเบงเบฑเบเปเบเบเปเบเบญเบเบเบนเปเปเบเบตเบเปเบเป, เปเบฅเบฐเบเปเบฒเบเปเบฒเบเปเบเปเบฅเบฐเบซเบฑเบเบชเบปเปเบเปเบชเบตเบกเบเบฒเบเบเบฒเบ LinuxAPI , เบเปเบฒเบเบเบฐเปเบเปเบฎเบฑเบเบชเปเบงเบเบซเบผเบธเบ 30%.
เบเบฑเบโเบซเบเปเปโเบเบฒเบโเบเบถเปเบกโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบญเปเบฒเบโเบญเบตเบโ:
เปเบเบปเปเบฒเบฎเบฑเบ: เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ
เปเบเบเบปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเบทเปเบเบเบฒเบเบเบญเบเบเบฒเบเบญเบญเบเปเบเบเปเบเบตเบเปเบงเบตเปเบเบเบเปเปเบฒเป เปเบฅเบฐเบเบฐเปเบฒเบ, เปเบฅเบฐเบเบฑเบเปเบเบดเปเบ daemon เบเบดเปเบชเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ inetd, เปเบเบดเปเบเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเปเปเบเบฒเบเบชเปเบฒเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเบตเบเปเบงเบตเบญเบดเบเปเบเบตเปเบเบฑเบ.
เปเบเบตเบเปเบงเบตเปเบเบเบเปเบณเป เปเบฅเบฐเบเบฐเปเบฒเบ
เบกเบตเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเบณเปเบเบตเบเปเบงเบตเปเบเบทเบญเบเปเบฒเบเบเบตเปเบญเบตเบเปเบชเปเปเบเบปเปเบฒเบฎเบฑเบเบเบปเปเบงเปเบเบชเบญเบเบญเบฑเบ:
-
iterative: เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบซเปเบเปเบฅเบดเบเบฒเบเบฅเบนเบเบเปเบฒเบซเบเบถเปเบเบเบฑเปเบ, เบเปเบฒเบญเบดเบเบเบฐเบกเบงเบเบเบปเบเบเปเบฒเบฎเปเบญเบเบเป (เบซเบผเบทเบซเบผเบฒเบเบเปเบฒเบฎเปเบญเบเบเป) เบเบฒเบเบฅเบนเบเบเปเบฒเบซเบเบถเปเบเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบเบเปเปเปเบ;
-
เบเบฐเบซเบเบฒเบ: เปเบเบตเบเปเบงเบตเบเบทเบเบญเบญเบเปเบเบเปเบเบทเปเบญเบฎเบฑเบเปเบเปเบฅเบนเบเบเปเบฒเบซเบผเบฒเบเปเบเบปเบเบเปเบญเบกเปเบเบฑเบ.
เบเบปเบงเบขเปเบฒเบเบเบญเบเปเบเบตเบเปเบงเบตเบเบตเปเบเปเปเบฒเบเบฑเบเปเบเบเบญเบตเบเปเบชเปเบเบดเบง FIFO เปเบเปเบเบทเบเบเปเบฒเบชเบฐเปเบซเบเบตเปเบฅเปเบงเปเบเบเบฒเบ 44.8.
เปเบเบตเบเปเบงเบตเปเบเบเบเปเบณเปเบกเบฑเบเบเบฐเปเปเบฒเบฐเบชเบปเบกเบเบฝเบเปเบเปเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเบเบฒเบเบฎเปเบญเบเบเปเบเบญเบเบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเบเบฐเบกเบงเบเบเบปเบเปเบเปเปเบงเบเปเบชเบปเบกเบเบงเบ, เปเบเบฒเบฐเบงเปเบฒเบฅเบนเบเบเปเบฒเปเบเปเบฅเบฐเบเบปเบเบเบทเบเบเบฑเบเบเบฑเบเปเบซเปเบฅเปเบเปเบฒเบเบปเบเบเปเบงเบฒเบฅเบนเบเบเปเบฒเบญเบทเปเบเบขเบนเปเบเบฒเบเปเปเบฒเบเบญเบเบกเบฑเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบซเปเบเปเบฅเบดเบเบฒเบ. เบเปเบฅเบฐเบเบตเบเบตเปเปเบเปเบเบปเปเบงเปเบเบชเปเบฒเบฅเบฑเบเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบกเปเบเบเบฒเบเปเบฅเบเบเปเบฝเบเบเปเบฒเบฎเปเบญเบเบเปเบเบฝเบงเปเบฅเบฐเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบฅเบฐเบซเบงเปเบฒเบเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฐเบซเบเบฒเบเปเบกเปเบเปเบซเบกเบฒเบฐเบชเบปเบกเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเปเบฒเบฎเปเบญเบเบเปเปเบเปเบฅเบฐเบเบฑเปเบเปเบเปเปเบงเบฅเบฒเบซเบผเบฒเบเปเบเบเบฒเบเบเบธเบเปเบเปเบ, เบซเบผเบทเบเปเบญเบเบเบตเปเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบปเปเบฒเบฎเปเบงเบกเปเบเบเบฒเบเปเบฅเบเบเปเบฝเบเบเปเปเบเบงเบฒเบกเบเบฒเบง. เปเบเบเบปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบธเบกเปเบชเปเบงเบดเบเบตเบเบฒเบเปเบเบเบเบฑเปเบเปเบเบตเบก (เปเบฅเบฐเบเปเบฒเบเบเบฒเบเบเบตเปเบชเบธเบ) เปเบเบเบฒเบเบญเบญเบเปเบเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฐเบซเบเบฒเบ, เปเบเบดเปเบเปเบกเปเบเบเบฒเบเบชเปเบฒเบเบเบฐเบเบงเบเบเบฒเบเบฅเบนเบเปเบเบเบเปเบฒเบเบซเบฒเบเบชเปเบฒเบฅเบฑเบเบฅเบนเบเบเปเบฒเปเบซเบกเปเปเบเปเบฅเบฐเบเบปเบ. เบเบฐเบเบงเบเบเบฒเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบงเบฝเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเบทเปเบญเบฎเบฑเบเปเบเปเบฅเบนเบเบเปเบฒเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบชเบดเปเบเบชเบธเบเบฅเบปเบ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเปเบเปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบฑเบเปเบญเบเบฐเบฅเบฒเบ, เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบซเปเบเปเบฅเบดเบเบฒเบเบฅเบนเบเบเปเบฒเบซเบผเบฒเบเบเปเบญเบกเปเบเบฑเบ. เบงเบฝเบเบเบฒเบเบเบปเปเบเบเปเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบปเปเบเบเป (เบเปเปเปเบกเป) เปเบกเปเบเบเบฒเบเบชเปเบฒเบเบฅเบนเบเปเบเบเบเปเบฒเบเบซเบฒเบเบชเปเบฒเบฅเบฑเบเบฅเบนเบเบเปเบฒเปเบซเบกเปเปเบเปเบฅเบฐเบเบปเบ (เบเบฒเบเปเบฅเบทเบญเบ, เบเบฐเบเบนเปเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบเบฐเบเบงเบเบเบฒเบ).
เปเบเบเบฒเบเบเปเปเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบดเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเปเบเปเบกเบเบญเบดเบเปเบเบตเปเบเบฑเบเบเบตเปเบเปเปเบฒเบเบฑเบเปเบฅเบฐเบเบฐเบซเบเบฒเบ. เปเบเบตเบเปเบงเบตเบชเบญเบเบญเบฑเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ echo เบชเบฐเบเบฑเบเบเบตเปเบเปเบฒเบเบเบฒเบ (RFC 862), เปเบเบดเปเบเบชเบปเปเบเบเบทเบเบชเบณเปเบเบปเบฒเบเบญเบเบเปเปเบเบงเบฒเบกเบเบตเปเบฅเบนเบเบเปเบฒเบชเบปเปเบเปเบเบซเบฒเบกเบฑเบ.
เปเบเบตเบเปเบงเบต UDP เบเปเบณเปเบชเบฝเบเบเบฑเบ
เปเบเบเบตเปเปเบฅเบฐเบเบฒเบเบเปเปเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบฐเบเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ echo. เบกเบฑเบเบกเบตเบขเบนเปเปเบเบเบญเบเปเบฒเบเปเบฅเบ 7 เปเบฅเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบฑเบ UDP เปเบฅเบฐ TCP (เบเบญเบเบเบตเปเบเบทเบเบชเบฐเบซเบเบงเบเปเบงเป, เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบ เปเบเบตเบเปเบงเบต echo เบเปเบญเบเปเบเปเปเบฅเปเบเบเปเบงเบเบชเบดเบเบเบดเบเบญเบเบเบนเปเปเบเบดเปเบเปเบเบเบฅเบฐเบเบปเบ).
เปเบเบตเบเปเบงเบต echo UDP เบชเบทเบเบเปเปเบญเปเบฒเบ datagrams เปเบฅเบฐเบชเบปเปเบเบเบทเบเบชเปเบฒเปเบเบปเบฒเบเบญเบเบกเบฑเบเปเบเบซเบฒเบเบนเปเบชเบปเปเบ. เปเบเบทเปเบญเบเบเบฒเบเปเบเบตเบเปเบงเบตเบเปเบญเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบเบงเบฒเบกเปเบเบทเปเบญเบฅเบฐเบญเบฑเบ, เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเบณเปเบเบเบเปเบณเปเบเบฐเบเบฝเบเบเป. เปเบเบฅเปเบชเปเบงเบเบซเบปเบงเบเบญเบเปเบเบตเบเปเบงเบตเปเบกเปเบเบชเบฐเปเบเบเบขเบนเปเปเบเบฅเบฒเบเบเบฒเบ 56.1.
เบฅเบฒเบเบเบฒเบ 56.1. เปเบเบฅเปเบชเปเบงเบเบซเบปเบงเบชเบณเบฅเบฑเบเปเบเบฃเปเบเบฃเบก id_echo_sv.c เปเบฅเบฐ id_echo_cl.c
#include "inet_sockets.h" /* เบเบฐเบเบฒเบเบเบฑเบเบเบฑเบเบเบฑเบญเบเปเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ */
#เบฅเบงเบกเบเบฑเบ "tlpi_hdr.h"
#define SERVICE "echo" /* เบเบทเปเบเปเบฅเบดเบเบฒเบ UDP */
#define BUF_SIZE 500 /* เบเบฐเปเบฒเบเบชเบนเบเบชเบธเบเบเบญเบ datagrams เบเบฑเปเบ
เบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเปเบเบเบฅเบนเบเบเปเบฒ เปเบฅเบฐเปเบเบตเบเปเบงเบต */
_________________________________________________________________________________ sockets/id_echo.h
เบฅเบฒเบเบเบทเป 56.2 เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบเบธเบเบเปเปเปเบเบเบตเปเปเบกเปเบเบชเบปเบกเบเบงเบเบเบตเปเบเบฐเบชเบฑเบเปเบเบ:
-
เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบปเปเบฒเปเบเปเบเปเบซเบกเบ daemon, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฑเบเบเบฑเบ becomeDaemon() เบเบฒเบเบเบฒเบ 37.2;
-
เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเปเบเบเบเบฒเบเบกเบตเบเบงเบฒเบกเบซเบเบฒเปเบซเบเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ sockets เบญเบดเบเปเบเบตเปเบเบฑเบ, เบเบฑเบเบเบฐเบเบฒเปเบเบเบฒเบ 55.12;
-
เบเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบชเบปเปเบเบเบทเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเบฑเบเบฅเบนเบเบเปเบฒ, เบกเบฑเบเบเบฐเบเบฝเบเบเปเปเบเบงเบฒเบกเปเบเบซเบฒเบเบฑเบเบเบถเบเปเบเบเปเบเป syslog() call.
เปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเปเบเปเบเบดเบ, เบเบงเบเปเบฎเบปเบฒเบญเบฒเบเบเบฐเบเปเบฒเบเบปเบเบเบญเบเปเบเบเบเปเบฒเบเบฑเบเบเบฒเบเบขเปเบฒเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบตเปเบเบญเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบเปเปเบเบงเบฒเบกเปเบเบเปเบเป syslog(). เบเบตเปเบเบฐเบฅเบปเบเบฅเปเบฒเบเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบญเบเบเบฒเบเปเบเบกเบเบต overflowing เบเบฑเบเบเบถเบเบเบญเบเบฅเบฐเบเบปเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบขเปเบฒเบฅเบทเบกเบงเปเบฒเปเบเปเบฅเบฐเบเบฒเบเปเบเปเบเบซเบฒ syslog() เปเบกเปเบเบเปเบญเบเบเปเบฒเบเปเบเบ, เปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเปเบเป fsync() เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ.
เบฅเบฒเบเบเบฒเบ 56.2. เปเบเบตเบเปเบงเบต Iteration เบเบตเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ UDP echo
_________________________________________________________________ sockets/id_echo_sv.c
#เบฅเบงเบกเบเบฑเบ
#เบฅเบงเบกเบเบฑเบ "id_echo.h"
#เบฅเบงเบกเบเบฑเบ "become_daemon.h"
int
main(int argc, char *argv[])
{
int sfd;
ssize_t numRead;
socklen_t เปเบฅเบ;
เปเบเบเบชเปเบฒเบ sockaddr_storage claddr;
char buf[BUF_SIZE];
char addrStr[IS_ADDR_STR_LEN];
เบเปเบฒ (เบเบฒเบเปเบเบฑเบDaemon(0) == -1)
errExit("becomeDaemon");
sfd = inetBind(SERVICE, SOCK_DGRAM, NULL);
เบเปเบฒ (sfd == -1) {
syslog(LOG_ERR, "เบเปเปเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเบฑเบญเบเปเบเบฑเบเปเบเบตเบเปเบงเบต (%s)",
strerror(errno));
เบญเบญเบ(EXIT_FAILURE);
/* เบฎเบฑเบ datagrams เปเบฅเบฐเบชเบปเปเบเบเบทเบเบชเปเบฒเปเบเบปเบฒเบเบญเบเบเบงเบเปเบเบปเบฒเปเบซเปเบเบฑเบเบเบนเปเบชเบปเปเบ */
}
เบชเปเบฒเบฅเบฑเบ (;;) {
len = sizeof(เปเบเบเบชเปเบฒเบ sockaddr_storage);
numRead = recvfrom(sfd, buf, BUF_SIZE, 0, (เปเบเบเบชเปเบฒเบ sockaddr *) &claddr, &len);
เบเปเบฒ (numRead == -1)
errExit("recvfrom");
เบเปเบฒ (sendto(sfd, buf, numRead, 0, (struct sockaddr *) &claddr, len)
!= numRead)
syslog(LOG_WARNING, "เปเบเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบเบฒเบเบเบญเบเบชเบฐเปเบญเบเบเปเป %s (%s)",
inetAddressStr((struct sockaddr *) &claddr, len,
addrStr, IS_ADDR_STR_LEN),
strerror(errno));
}
}
_________________________________________________________________ sockets/id_echo_sv.c
เปเบเบทเปเบญเบเบปเบเบชเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเปเบเบตเบเปเบงเบต, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบฃเปเบเบฃเบกเบเบฒเบเบฅเบฒเบเบเบฒเบ 56.3. เบกเบฑเบเบเบฑเบเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเบปเปเบฒเบฎเบฑเบเปเบเปเบกเบเบญเบดเบเปเบเบตเปเบเบฑเบ, เบเบฑเบเบเบฐเบเบฒเปเบเบเบฒเบ 55.12. เปเบเบเบฒเบเบฐเปเบเบฑเบเบเบฒเบเปเบเปเบเบฝเบเปเบเบงเบเปเบฒเบชเบฑเปเบเบเปเบฒเบญเบดเบ, เปเบเบเบเบฒเบเบฅเบนเบเบเปเบฒเปเบญเบปเบฒเบเบทเปเบเบญเบ node เปเบเบทเบญเบเปเบฒเบเบเบตเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฑเปเบเบขเบนเป. เบฅเบนเบเบเปเบฒเปเบเบปเปเบฒเปเบเปเบ loop เบเปเบญเบเบเบตเปเบกเบฑเบเบชเบปเปเบเปเบเปเบฅเบฐ argument เบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบฑเบ datagrams เปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบญเปเบฒเบเปเบฅเบฐเบเบดเบก datagrams เบเบตเปเบกเบฑเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบ.
เบฅเบฒเบเบเบฒเบ 56.3. เบฅเบนเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ UDP echo
#เบฅเบงเบกเบเบฑเบ "id_echo.h"
int
main(int argc, char *argv[])
{
int sfd, j;
size_t เปเบฅเบ;
ssize_t numRead;
char buf[BUF_SIZE];
เบเปเบฒ (argc < 2 || strcmp(argv[1], "--help") == 0)
useErr("%s host msgโฆn", argv[0]);
/* เบชเปเบฒเบเบเบตเปเบขเบนเปเปเบเบตเบเปเบงเบตเปเบเบเบญเบตเบเปเบชเปเบเบฒเบเปเบเปเบเบฝเบเปเบเบงเบเปเบฒเบชเบฑเปเบเบเปเบฒเบญเบดเบ */
sfd = inetConnect(argv[1], เบเปเบฅเบดเบเบฒเบ, SOCK_DGRAM);
เบเปเบฒ (sfd == -1)
fatal("เบเปเปเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบปเปเบฒเบฎเบฑเบเปเบเบตเบเปเบงเบต");
/* เบชเบปเปเบเบเบฒเบเปเบเปเบเบฝเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบฎเบนเบเปเบเบเบเบญเบ datagrams เปเบเบเบเปเบฒเบเบซเบฒเบ */
เบชเปเบฒเบฅเบฑเบ (j = 2; j < argc; j++) {
len = strlen(argv[j]);
เบเปเบฒ (เบเบฝเบ(sfd, argv[j], len) != len)
fatal("เบเบฝเบเบเบฒเบเบชเปเบงเบ/เบฅเบปเปเบกเปเบซเบฅเบง");
numRead = เบญเปเบฒเบ(sfd, buf, BUF_SIZE);
เบเปเบฒ (numRead == -1)
errExit("เบญเปเบฒเบ");
printf("[%ld bytes]%.*sn", (เบเบฒเบง) numRead, (int) numRead, buf);
}
เบญเบญเบ(EXIT_SUCCESS);
}
_________________________________________________________________ sockets/id_echo_cl.c
เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบซเบฑเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฅเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบฅเบฐเบชเบญเบเบเบปเบงเบขเปเบฒเบเบฅเบนเบเบเปเบฒ:
$su // เบชเบดเบเบเบดเบเบดเปเบชเบเปเบกเปเบเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบเบนเบเบกเบฑเบเบเบฑเบเบเบญเบเบเบตเปเบชเบฐเบซเบเบงเบเปเบงเป
เบฅเบฐโเบซเบฑเบโเบเปเบฒเบโ:
# ./id_echo_sv // เปเบเบตเบเปเบงเบตเปเบเบปเปเบฒเปเบเปเบเปเปเบเบเบทเปเบเบซเบผเบฑเบ
# เบญเบญเบ // เบเบญเบกเปเบเปเบชเบดเบเบเบนเปเบเปเบฅเบดเบซเบฒเบ
$ ./id_echo_cl localhost hello world // เบฅเบนเบเบเปเบฒเบเบตเปเบชเบปเปเบเบชเบญเบ datagrams
[5 bytes] เบชเบฐเบเบฒเบเบเบต // เบฅเบนเบเบเปเบฒเบชเบฐเปเบเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเบตเปเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ
[5 bytes] เปเบฅเบ
$ ./id_echo_cl localhost goodbye // เบฅเบนเบเบเปเบฒเบเบตเปเบชเบปเปเบเบซเบเบถเปเบ datagram
[7 bytes] เบชเบฐเบเบฒเบเบเบต
เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปโเปเบซเปโเบเปเบฒเบโเบญเปเบฒเบโเปเบเบฑเบโเบชเบธเบโ)
เปเบซเบผเปเบเบเปเปเบกเบนเบ: linux.org.ru