Unix Socket - ฟังก์ชั่นตัวช่วย

บทนี้จะอธิบายถึงฟังก์ชั่นตัวช่วยทั้งหมดที่ใช้ในการเขียนโปรแกรมซ็อกเก็ต ฟังก์ชั่นตัวช่วยอื่น ๆ มีอธิบายไว้ในบท -Ports and Servicesและเครือข่าย Byte Orders.

เขียนฟังก์ชั่น

เขียนความพยายามในการทำงานเพื่อไบต์เขียน nbyte จากบัฟเฟอร์ชี้โดยbufไปยังไฟล์ที่เกี่ยวข้องกับการอธิบายไฟล์เปิดfildes

คุณยังสามารถใช้ฟังก์ชันsend ()เพื่อส่งข้อมูลไปยังกระบวนการอื่น

#include <unistd.h>

int write(int fildes, const void *buf, int nbyte);

เมื่อดำเนินการสำเร็จแล้ว write () จะส่งคืนจำนวนไบต์ที่เขียนไปยังไฟล์ที่เกี่ยวข้องกับ fildes ตัวเลขนี้ไม่เคยมากกว่า nbyte มิฉะนั้นจะส่งคืน -1

พารามิเตอร์

  • fildes - เป็นตัวบอกซ็อกเก็ตที่ส่งคืนโดยฟังก์ชันซ็อกเก็ต

  • buf - เป็นตัวชี้ไปยังข้อมูลที่คุณต้องการส่ง

  • nbyte- เป็นจำนวนไบต์ที่จะเขียน ถ้า nbyte เป็น 0 การเขียน () จะส่งกลับ 0 และไม่มีผลลัพธ์อื่น ๆ หากไฟล์นั้นเป็นไฟล์ปกติ มิฉะนั้นผลลัพธ์จะไม่ระบุ

อ่านฟังก์ชั่น

อ่านพยายามฟังก์ชั่นในการอ่าน nbyte ไบต์จากไฟล์ที่เกี่ยวข้องกับบัฟเฟอร์ fildes, ลงในบัฟเฟอร์ที่ชี้ไปตาม buf

คุณยังสามารถใช้ฟังก์ชันrecv ()เพื่ออ่านข้อมูลไปยังกระบวนการอื่น

#include <unistd.h>

int read(int fildes, const void *buf, int nbyte);

เมื่อดำเนินการสำเร็จแล้ว write () จะส่งคืนจำนวนไบต์ที่เขียนไปยังไฟล์ที่เกี่ยวข้องกับ fildes ตัวเลขนี้ไม่เคยมากกว่า nbyte มิฉะนั้นจะส่งคืน -1

พารามิเตอร์

  • fildes - เป็นตัวบอกซ็อกเก็ตที่ส่งคืนโดยฟังก์ชันซ็อกเก็ต

  • buf - เป็นบัฟเฟอร์ในการอ่านข้อมูล

  • nbyte - เป็นจำนวนไบต์ที่จะอ่าน

ส้อมฟังก์ชั่น

ส้อมฟังก์ชั่นสร้างกระบวนการใหม่ กระบวนการใหม่ที่เรียกว่ากระบวนการลูกจะเป็นสำเนาที่แน่นอนของกระบวนการเรียก (กระบวนการแม่) กระบวนการลูกจะสืบทอดแอตทริบิวต์จำนวนมากจากกระบวนการหลัก

#include <sys/types.h>
#include <unistd.h>

int fork(void);

เมื่อดำเนินการสำเร็จ fork () จะส่งคืน 0 ไปยังกระบวนการลูกและ ID กระบวนการของกระบวนการลูกไปยังกระบวนการแม่ มิฉะนั้น -1 จะถูกส่งกลับไปยังกระบวนการพาเรนต์ไม่มีการสร้างกระบวนการย่อยและ errno ถูกตั้งค่าเพื่อระบุข้อผิดพลาด

พารามิเตอร์

  • void - หมายความว่าไม่จำเป็นต้องมีพารามิเตอร์

bzeroฟังก์ชั่น

bzeroสถานที่ฟังก์ชั่นnbyte null ไบต์ในสตริงs ฟังก์ชันนี้ใช้เพื่อตั้งค่าโครงสร้างซ็อกเก็ตทั้งหมดด้วยค่า null

void bzero(void *s, int nbyte);

ฟังก์ชันนี้ไม่ส่งกลับอะไรเลย

พารามิเตอร์

  • s- ระบุสตริงที่ต้องเติมด้วย null ไบต์ นี่จะเป็นตัวแปรโครงสร้างแบบจุดต่อซ็อกเก็ต

  • nbyte- ระบุจำนวนไบต์ที่จะเติมด้วยค่า null นี่จะเป็นขนาดของโครงสร้างซ็อกเก็ต

bcmpฟังก์ชั่น

bcmpฟังก์ชั่นเปรียบเทียบ s1 สตริงไบต์กับไบต์สตริง s2 สตริงทั้งสองถือว่ามีความยาว nbyte ไบต์

int bcmp(const void *s1, const void *s2, int nbyte);

ฟังก์ชันนี้จะคืนค่า 0 หากสตริงทั้งสองเหมือนกันไม่เช่นนั้น 1 ฟังก์ชัน bcmp () จะคืนค่า 0 เสมอเมื่อ nbyte เป็น 0

พารามิเตอร์

  • s1 - ระบุสตริงแรกที่จะเปรียบเทียบ

  • s2 - ระบุสตริงที่สองที่จะเปรียบเทียบ

  • nbyte - ระบุจำนวนไบต์ที่จะเปรียบเทียบ

bcopyฟังก์ชั่น

bcopyฟังก์ชั่นสำเนา nbyte ไบต์จากสตริง s1 จะ s2 สตริง สตริงที่ทับซ้อนกันได้รับการจัดการอย่างถูกต้อง

void bcopy(const void *s1, void *s2, int nbyte);

ฟังก์ชันนี้ไม่ส่งกลับอะไรเลย

พารามิเตอร์

  • s1 - ระบุสตริงต้นทาง

  • s2v - ระบุสตริงปลายทาง

  • nbyte - ระบุจำนวนไบต์ที่จะคัดลอก

memsetฟังก์ชั่น

memsetฟังก์ชั่นนอกจากนี้ยังใช้กับตัวแปรโครงสร้างชุดในลักษณะเดียวกับที่bzero. ดูไวยากรณ์ที่ระบุด้านล่าง

void *memset(void *s, int c, int nbyte);

ฟังก์ชันนี้จะส่งกลับตัวชี้เป็นโมฆะ ในความเป็นจริงเป็นตัวชี้ไปยังหน่วยความจำที่ตั้งไว้และคุณต้องจัดลำดับตามนั้น

พารามิเตอร์

  • s - ระบุแหล่งที่จะตั้งค่า

  • c - ระบุอักขระที่จะตั้งค่าบน nbyte places

  • nbyte - ระบุจำนวนไบต์ที่จะกำหนด