Socket ini berfungsi berkomunikasi langsung dengan protokol Internet untuk mengirimkan informasi. Dibandingkan dengan aliran fopensock, aliran ini beroperasi pada tingkat yang relatif rendah. Biasanya, mereka merangkum fungsi C dan memiliki nama yang mirip. Jika Anda memiliki pengalaman dengan pemrograman soket di C, Anda akan merasa sangat nyaman menggunakan fungsi-fungsi ini. Kami tidak akan membahas pemrograman soket secara khusus di sini.
Gunakan fungsi-fungsi ini untuk memecahkan masalah sulit yang tidak dapat dilakukan oleh fungsi tingkat yang lebih tinggi. Menggunakan fungsi-fungsi ini dapat mencapai fungsi yang mirip dengan fopen. Anda mungkin memiliki banyak cara untuk mengimplementasikan fungsi soket, seperti daemon Internet yang diimplementasikan menggunakan CLI (Command-line Interface) di PHP.
sumber daya socket_accept(soket sumber daya)
Di sisi server skrip Anda, gunakan socket_accept untuk menerima koneksi masuk. Anda harus terlebih dahulu membuat soket, mengikatnya ke sebuah nama, dan mengaturnya agar mendengarkan pada port. Dalam mode blok, socket_accept akan menghasilkan koneksi unik yang diterima. Dalam mode non-blok, ia mengembalikan false jika tidak ada koneksi yang dibuat. Selain itu, bila Anda memiliki sumber daya soket baru, Anda dapat melakukan operasi baca dan tulis.
Di bawah ini kami akan mendemonstrasikan server gema sederhana. Ini berjalan di bawah CLI (baris perintah), dan menunggu koneksi klien pada port 12345.
soket_terima
<?php
set_time_limit(0);
//buat soketnya
if(($socket = socket_create(AF_INET, SOCK_STREAM, 0)) < 0){
print("Tidak dapat membuat soket: " . socket_strerror(socket_last_error()) . "n");
}
// ikat ke alamat dan port yang diberikan
if(($error = socket_bind($socket, gethostbyname($_SERVER['HOSTNAME']), 12345)) < 0){
print("Tidak dapat mengikat soket: " . socket_strerror(socket_last_error()) . "n");
}
if(($error = socket_listen($socket, 5)) < 0){
print("Tidak dapat dicantumkan pada soket: " .
soket_strerror(socket_last_error()) "n");
}
sementara(BENAR){
//tunggu koneksi
if(($accept = soket_accept($socket)) < 0){
print("Kesalahan saat membaca: " . socket_strerror($message) . "n");
merusak;
}
//kirim pesan selamat datang
socket_write($accept, "Koneksi diteriman");
print(date('Ymd H:i:s') . " STATUS: Koneksi diteriman");
ob_flush();
sementara(BENAR){
//baca baris dari klien
if(FALSE === ($line = socket_read($accept, 1024))){
print("Tidak dapat membaca dari soket: " .
soket_strerror(socket_last_error()) "n");
istirahat 2;
}
if( !@socket_write($accept , "ECHO: $line")){
print(date('Ymd H:i:s') . " STATUS: Koneksi terputusn");
merusak;
}
print(date('Ymd H:i:s') . " BACA: $line");
ob_flush();
}
socket_close($menerima);
}
?>
bool socket_bind(soket sumber daya, alamat string, port integer)
socket_bind() ini mengikat sumber daya soket ke suatu alamat. Soket ini harus berupa sumber daya yang dikembalikan oleh fungsi socket_create(). Alamat ini harus berupa alamat IP atau jalur ke soket Unix. Jika itu adalah soket yang berjalan di Internet, Anda juga harus menyediakan port.
socket_clear_error(soket sumber daya)
Fungsi ini dapat menghapus kesalahan pada soket yang ditentukan. Jika tidak ada parameter yang ditentukan, semua kesalahan soket akan dihapus.
socket_close(soket sumber daya)
Fungsi socket_close menutup soket dan menghapus sumber daya memori yang ditempati oleh soket.
boolean socket_connect (soket sumber daya, alamat string, port integer)
Fungsi ini membuat koneksi klien ke port atau soket. Anda harus menyediakan soket yang dihasilkan oleh socket_create. Parameter alamat harus berupa jalur ke soket atau alamat IP. Jika yang terakhir, itu juga harus diikuti dengan nomor port numerik.
Contoh berikut menunjukkan proses menghubungkan ke server game dan memperoleh informasi menggunakan protokol UDP.
soket_koneksi
<?php
//buat soket UDP
if(($socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) < 0){
print("Tidak dapat membuat soket: " .
soket_strerror(socket_last_error()) "n");
}
//batas waktu setelah 5 detik
soket_set_option($soket, SOL_SOCKET,
SO_RCVTIMEO, array('detik'=>5,'usec'=>0));
//sambungkan ke server utama RtCW
if(!socket_connect($socket, 'wolfmaster.idsoftware.com', 27950)){
print("Tidak dapat terhubung: " .
soket_strerror(socket_last_error()) "n");
}
//kirim permintaan untuk server
socket_write($socket, "xFFxFFxFFxFFgetserversx00");
//dapatkan server
$server = susunan();
while(FALSE !== ($line = @socket_read($socket, 4096))){
//mengurai data
untuk($i=22; ($i+5) < strlen($garis); $i += 7){
$ip = ord(substr($baris, $i+1, 1)) .
ord(substr($baris, $i+2, 1)) .
ord(substr($baris, $i+3, 1)) .
ord(substr($baris, $i+4, 1));
$port = (ord(substr($baris, $i+5, 1)) * 256) +
ord(substr($baris, $i+6, 1));
$server[] = array('ip'=>$ip, 'port'=>$port);
}
}
print("<h1>" .count($server) . " Server</h1>n");
//perulangan ke server, dapatkan status
foreach($server sebagai $s){
print("<h1>{$s['ip']}:{$s['port']}</h1>n");
//sambungkan ke server RtCW
if(!socket_connect($socket, $s['ip'], $s['port'])){
mencetak("<p>n" .
soket_strerror(socket_last_error()) .
"n</p>n");
melanjutkan;
}
//kirim permintaan status
socket_write($socket, "xFFxFFxFFxFFgetstatusx00");
//dapatkan status dari server
if(FALSE === ($baris = @socket_read($socket, 1024))){
mencetak("<p>n" .
soket_strerror(socket_last_error()) .
"n</p>n");
melanjutkan;
}
$bagian = meledak("n", $baris);
//pengaturan ada di baris kedua yang dipisahkan dengan garis miring terbalik
$pengaturan = meledak("\", $bagian[1]);
print("<h2>Konfigurasi</h2>n");
mencetak("<p>n");
untuk($s=1; $s < hitungan($pengaturan); $s += 2){
print("tt{$pengaturan[$s]} = {$pengaturan[$s+1]<br>n");
}
cetak("</p>n");
print("<h2>Pemain</h2>n");
$lastPlayer = hitungan($bagian) - 1;
untuk($p=2; $p < $pemain terakhir; $p++){
$pemain = meledak(" ", $bagian[$p]);
print("{$pemain[2]} Skor={$pemain[0]} " .
"Ping={$pemain[1]<br>n");
}
cetak("</p>n");
ob_flush();
}
print("</tabel>n");
soket_dekat($soket);
?>
sumber daya socket_create(keluarga bilangan bulat, tipe_soket bilangan bulat, protokol bilangan bulat)
socket_create menginisialisasi struktur soket. Parameter pertama adalah keluarga protokol, atau domain. Anda harus menggunakan AF_INET untuk menentukan koneksi Internet, atau AF_UNIX untuk menentukan koneksi soket Unix. Parameter kedua adalah jenis soket, yang dapat Anda pilih dari tabel di bawah. Umumnya menggunakan SOCK_STREAM untuk menggunakan protokol TCP, dan protokol UDP untuk menggunakan SOCK_DGRAM. Parameter ketiga menentukan protokol. Gunakan SOL_TCP atau SOL_UDP untuk menyesuaikan dengan protokol TCP dan UDP. Pilihan lainnya adalah Anda dapat menggunakan fungsi getprotobyname untuk menangani hal ini.
Deskripsi konstan jenis soket
SOCK_DGRAM secara otomatis mengalamatkan soket paket
Antarmuka protokol SOCK_RAW RAW
SOCK_RDM pertukaran pesan yang andal
Sock_SEQPACKET soket paket data berurutan
Soket aliran SOCK_STREAM
sumber daya socket_create_listen (port bilangan bulat, simpanan bilangan bulat)
Menggunakan socket_create_listen adalah metode yang lebih sederhana daripada socket_create untuk menghasilkan soket untuk mendengarkan. Soket yang dihasilkan akan mendengarkan port yang ditentukan, dan parameter opsional backlog adalah mengatur jumlah maksimum koneksi yang diizinkan.
boolean socket_create_pair (keluarga integer, integer socket_type, protokol integer, pegangan array)
Fungsi socket_create_pair menghasilkan sepasang koneksi soket. Pertama-tama, tiga parameter pertama adalah deskripsi dari socket_create. Parameter handle adalah array yang berisi dua sumber daya soket. Fungsi ini merupakan enkapsulasi fungsi socketpair di C.
socket_create_pair
<?php
if(!socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $socket)){
print("Tidak dapat membuat soket!n");
KELUAR();
}
$anak = pcntl_fork();
if($anak == -1){
print("Tidak dapat melakukan fork!n");
KELUAR();
}
elseif($anak > 0){
//induk
socket_close($soket[0]);
print("Orangtua: menunggu pesann");
$pesan = soket_read($soket[1], 1024, PHP_NORMAL_READ);
print("Orangtua: mendapat pesan--$pesann");
socket_write($socket[1], "Halo, Proses Anak!n");
pcntl_waitpid($anak, $status);
}kalau tidak{
//anak
socket_close($soket[1]);
socket_write($socket[0], "Halo, Proses Induk!n");
print("Anak : menunggu pesann");
$pesan = soket_read($soket[0], 1024, PHP_NORMAL_READ);
print("Anak: mendapat pesan--$pesann");
keluar(0);
}
?>
nilai socket_get_option(soket sumber daya, level integer, opsi integer)
Fungsi socket_get_option mengembalikan nilai tambah yang tercantum dalam tabel berikut. Anda harus menyediakan sumber daya soket yang dihasilkan oleh socket_create dan level. Level soket yang diperoleh ini dapat ditentukan menggunakan SOL_SOCKET. Alternatifnya, gunakan protokol seperti SOL_TCP untuk mewakili protokol TCP. Opsi ini dapat diatur oleh socket_set_option.
soket_get_options
<?php
$soket = soket_buat(AF_INET, SOCK_STREAM, SOL_TCP);
mencetak('SO_BROADCAST: ' .
soket_get_option($soket, SOL_SOCKET,
SO_BROADCAST) . "<br>n");
mencetak('SO_DEBUG: ' .
soket_get_option($soket, SOL_SOCKET,
SO_DEBUG) "<br>n");
mencetak('JADI_JANGAN: ' .
soket_get_option($soket, SOL_SOCKET,
JADI_DONTROUTE) . "<br>n");
mencetak('JADI_ERROR: ' .
soket_get_option($soket, SOL_SOCKET,
JADI_ERROR) . "<br>n");
mencetak('JADI_KEEPALIVE: ' .
soket_get_option($soket, SOL_SOCKET,
SO_KEEPALIVE) . "<br>n");
mencetak('JADI_LINGER: ' .
print_r(socket_get_option($soket, SOL_SOCKET,
SO_LINGER), BENAR) "<br>n");
mencetak('SO_OOBINLINE: ' .
soket_get_option($soket, SOL_SOCKET,
SO_OOBINLINE) . "<br>n");
mencetak('SO_RCVBUF: ' .
soket_get_option($soket, SOL_SOCKET,
SO_RCVBUF) . "<br>n");
mencetak('SO_RCVLOWAT: ' .
soket_get_option($soket, SOL_SOCKET,
SO_RCVLOWAT) . "<br>n");
mencetak('SO_RCVTIMEO: ' .
print_r(socket_get_option($soket, SOL_SOCKET,
SO_RCVTIMEO), BENAR) "<br>n");
mencetak('SO_REUSEADDR: ' .
soket_get_option($soket, SOL_SOCKET,
SO_REUSEADDR) . "<br>n");
mencetak('SO_SNDBUF: ' .
soket_get_option($soket, SOL_SOCKET,
SO_SNDBUF) . "<br>n");
mencetak('JADI_SNDLOWAT: ' .
soket_get_option($soket, SOL_SOCKET,
SO_SNDLOWAT) . "<br>n");
mencetak('SO_SNDTIMEO: ' .
print_r(socket_get_option($soket, SOL_SOCKET,
SO_SNDTIMEO), BENAR) "<br>n");
mencetak('SO_TYPE: ' .
soket_get_option($soket, SOL_SOCKET,
SO_TYPE) . "<br>n");
?>
Deskripsi opsi tabel opsi soket
SO_BROADCAST memungkinkan soket yang dialamatkan secara otomatis untuk mengirim dan menerima paket siaran
SO_DEBUG mengaktifkan fungsi debugging soket. Hanya root yang memiliki izin untuk mengaktifkan opsi ini.
SO_DONTROUTE tidak menerima paket perutean melalui gateway
SO_ERROR Mendapatkan dan menghapus kesalahan soket terakhir.
SO_KEEPALIVE Membuka pesan yang masih aktif
SO_LINGER Socket_colse dan socket_shutdown membatalkan batas waktu pengiriman pesan, opsi ini menggunakan array, termasuk dua kunci l_onoff dan l_linger.
SO_OOBINLINE memasukkan data langsung ke buffer penerima
SO_RCVBUF membatasi jumlah byte maksimum yang dapat di-buffer
SO_RCVLOWAT menunda dengan menerima data minimum
SO_RCVTIMEO Menunda pelaporan batas waktu penerimaan, menggunakan dua kunci array: sec dan usec
SO_REUSEADDR memungkinkan penggunaan kembali alamat lokal
SO_SNDBUF membatasi byte maksimum buffer pengiriman
SO_SNDLOWAT menunda pengiriman data ke protokol ini saat menerima byte minimum
SO_SNDTIMEO Menunda pelaporan kesalahan batas waktu ketika pengirim melewati batas waktu. Opsi ini menggunakan kunci array: sec dan usec
SO_TYPE Mendapatkan jenis soket. Opsi ini mungkin tidak perlu disetel.
boolean socket_getpeername (soket sumber daya, alamat string, port integer)
socket_getpeername memperoleh alamat dan port dari koneksi yang ditentukan. Jika koneksinya adalah soket Unix, jalur ke sistem file akan dikembalikan.
boolean socket_getsockname (soket sumber daya, alamat string, port integer)
socket_getsockname menempatkan nama ke dalam soket dan menambahkan parameter alamat dan port. Mengembalikan false jika gagal.
(Saya tidak tahu banyak tentang fungsi socket_iovec_* di bawah ini, jadi saya tidak berani menerjemahkannya sembarangan, jadi saya simpan teks aslinya)
boolean socket_iovec_add(iovector sumber daya, panjang bilangan bulat)
Pengurapan socket_iovec_add menambahkan vektor I/O ke array pencar/pengumpul.
sumber daya socket_iovec_alloc(jumlah bilangan bulat, …)
Fungsi socket_iovec_alloc mengembalikan sumber daya untuk menangani kumpulan vektor I/O. Argumen pertama menentukan jumlah vektor. Argumen berikut menentukan panjang setiap vektor.
boolean socket_iovec_delete(iovector sumber daya, posisi bilangan bulat)
Fungsi socket_iovec_delete menghilangkan vektor I/O pada posisi tertentu.
string socket_iovec_fetch(vektor sumber daya, posisi bilangan bulat)
Fungsi socket_iovec_fetch mengembalikan nilai vektor yang ditentukan dalam sumber daya vektor I/O.
boolean socket_iovec_free(sumber daya iovector)
Fungsi socket_iovec_free membebaskan memori yang digunakan untuk sumber daya vektor I/O.
boolean socket_iovec_set(vektor sumber daya, posisi bilangan bulat, nilai string)
Socket_iovec_set menetapkan nilai vektor I/O pada posisi tertentu.
integer socket_last_error(soket sumber daya)
Fungsi socket_last_error mengembalikan kesalahan terakhir yang dihasilkan oleh fungsi soket apa pun dalam operasi. Anda mungkin telah menyetel opsi soket sumber daya soket pada koneksi yang ditentukan dalam fungsi di atas. Tabel berikut mencantumkan kode kesalahan yang dikembalikan. Anda juga dapat menggunakan fungsi soclet_strerror untuk mendapatkan kesalahan terperinci. Gunakan fungsi socket_clear_error untuk menghapus kesalahan soket.
Deskripsi konstan tabel kode kesalahan soket
Daftar parameter SOCKET_E2BIG terlalu panjang
SOCKET_EACCES tidak memiliki izin
Alamat SOCKET_EADDRINUSE sudah digunakan
SOCKET_EADDRNOTAVAIL tidak dapat menyelesaikan alamat yang diminta
Kesalahan siaran (iklan) SOCKET_EADV
SOCKET_EAFNOSUPPORT Protokol tidak didukung oleh keluarga Alamat
Sumber daya SOCKET_EAGAIN untuk sementara tidak tersedia
Operasi SOCKET_EALREADY sudah dijalankan
SOCKET_EBADE Pertukaran tidak valid
SOCKET_EBADF deskriptor file buruk
Status kesalahan deskriptor file SOCKET_EBADFD
Pesan kesalahan SOCKET_EBADMSG
SOCKET_EBADR Deskripsi permintaan tidak valid
SOCKET_EBADRQC Kode permintaan tidak valid
SOCKET_EBADSLT Lokasi operasi tidak valid
SOCKET_EBUSY Driver atau sumber daya sedang sibuk
SOCKET_ECHRNG nomor saluran di luar jangkauan
SOCKET_ECOMM Kirim kesalahan komunikasi
SOCKET_ECONNABORTED Gangguan lalu lintas karena alasan perangkat lunak
Koneksi SOCKET_ECONNREFUSED ditolak
SOCKET_ECONNRESET Koneksi direset dengan soket yang sama
SOCKET_EDESTADDRREQ harus memerlukan alamat tujuan
Kuota disk SOCKET_EDQUOT terlampaui
File SOCKET_EEXIST sudah ada
SOCKET_EFAULT alamat salah
Host SOCKET_EHOSTDOWN sedang down
SOCKET_EHOSTUNREACH tidak dirutekan ke host
SOCKET_EIDRM menunjukkan bahwa ID telah dihapus
Operasi SOCKET_EINPROGRESS sedang dijalankan
Panggilan sistem SOCKET_EINTR diblokir
Parameter SOCKET_EINVAL tidak valid
SOCKET_EIO kesalahan masukan/keluaran
Terminal transmisi SOCKET_EISCONN telah terhubung
SOCKET_EISDIR adalah direktori
SOCKET_EISNAM adalah file tipe tertentu
SOCKET_EL2HLT Tingkat 2 dibatalkan
SOCKET_EL2NSYNC Tingkat 2 tidak sinkron
SOCKET_EL3HLT Tingkat 3 dibatalkan
SOCKET_EL3RST Tingkat 3 disetel ulang
Nomor koneksi SOCKET_ELNRNG di luar jangkauan
SOCKET_ELOOP Terlalu banyak level tautan simbolis
SOCKET_EMEDIUMTYPE Jenis media salah (tipe perantara)
SOCKET_EMFILE Terlalu banyak file yang terbuka
SOCKET_EMLINK Terlalu banyak koneksi
Pesan SOCKET_EMSGSIZE terlalu panjang
SOCKET_EMULTIHOP Terlalu banyak upaya
Nama file SOCKET_ENAMETOOLONG terlalu panjang
Jaringan SOCKET_ENETDOWN sedang down
SOCKET_ENETRESET Jaringan terputus dan koneksi disetel ulang.
SOCKET_ENETUNREACHJaringan tidak dapat dijangkau
SOCKET_ENFILE Terlalu banyak file yang terbuka di sistem
SOCKET_ENOANO Tidak ada kutub positif
SOCKET_ENOBUFS Tidak tersedia ruang cache
SOCKET_ENOCSI Tidak ada struktur CSI yang tersedia
SOCKET_ENODATA Data tidak tersedia
SOCKET_ENODEV Tidak ada driver seperti itu
SOCKET_ENOENT Tidak ada file atau direktori seperti itu
SOCKET_ENOLCK Tidak tersedia kunci rekaman
Koneksi SOCKET_ENOLINK ke layanan yang ada
SOCKET_ENOMEDIUM Media tidak ditemukan
SOCKET_ENOMEM tidak dapat mengalokasikan memori
SOCKET_ENOMSG Tidak ada jenis pesan yang ditentukan
Perangkat SOCKET_ENONET tidak ada dalam jaringan
Protokol SOCKET_ENOPPROTOOPT tidak tersedia
SOCKET_ENOSPC Tidak ada ruang di drive
SOCKET_ENOSR melebihi sumber daya aliran
Driver SOCKET_ENOSTR bukan aliran
Fungsi SOCKET_ENOSYS tidak dijalankan
Diperlukan driver blok SOCKET_ENOTBLK
SOCKET_ENOTCONN Terminal transmisi tidak terhubung
SOCKET_ENODIR tidak memiliki direktori
Direktori SOCKET_ENOTEMPTY kosong
SOCKET_ENOTSOCK Operasi soket pada non-soket
SOCKET_ENOTTY Pengontrol IO tidak kompatibel
Nama SOCKET_ENOTUNIQ tidak unik di jaringan
SOCKET_ENXIO Tidak ada driver atau alamat tersebut
Operasi SOCKET_EOPNOTSUPP tidak didukung
Operasi SOCKET_EPERM tidak diperbolehkan
SOCKET_EPFNOSUPPORT Keluarga protokol tidak didukung
SOCKET_EPIPE pipa gagal
Kesalahan protokol SOCKET_EPROTO
Protokol SOCKET_EPROTONOSUPPORT tidak didukung
SOCKET_EPROTOTYPE Jenis kesalahan protokol pada Socket
Alamat jarak jauh SOCKET_EREMCHG telah berubah
Objek SOCKET_EREMOTE jauh
SOCKET_EREMOTEIO kesalahan I/O jarak jauh
SOCKET_ERESTART Panggilan sistem yang terputus akan dimulai ulang
Sistem file SOCKET_EROFS bersifat read-only
SOCKET_ESHUTDOWN. Interupsi titik akhir transmisi tidak dapat dikirim
SOCKET_ESOCKTNOSUPPORT Jenis soket tidak didukung
SOCKET_ESPIPE pencarian ilegal
Kesalahan pipa aliran SOCKET_ESTRPIPE
Pengatur waktu SOCKET_ETIME berakhir
Batas waktu koneksi SOCKET_ETIMEDOUT habis
SOCKET_ETOOMANYREFS Terlalu banyak koneksi untuk digabungkan
SOCKET_EUNATCH Tidak dapat melampirkan driver protokol
SOCKET_EUSERS Terlalu banyak pengguna
Sumber daya SOCKET_EWOULDBLOCK untuk sementara tidak tersedia
SOCKET_EXDEV Koneksi lintas drive tidak valid
Pertukaran SOCKET_EXFULL adalah
boolean penuh socket_listen (soket sumber daya, integer backlog)
Fungsi socket_listen ini menunggu koneksi dari klien. Parameter backlog menetapkan jumlah maksimum antrian yang diperbolehkan untuk menunggu koneksi.
string socket_read(soket sumber daya, panjang integer, tipe integer)
Fungsi socket_read membaca byte yang ditentukan dari soket tertentu dan mengembalikan false jika ada kesalahan. Secara default, mode baca aman biner digunakan. Anda dapat mengubah mode baca dengan mengatur parameter tipe secara eksternal ke PHP_BINARY_READ. Anda juga dapat mengatur tipe ke PHP_NORMAL_READ.
boolean socket_readv(soket sumber daya, vektor sumber daya)
Fungsi socket_readv menyisipkan data yang telah dibaca ke dalam sumber daya iovector.
integer socket_recv(soket sumber daya, buffer string, panjang integer, flag integer)
Fungsi socket_recv membaca data dan memasukkannya ke dalam buffer. Parameter Panjang menetapkan jumlah byte maksimum untuk dibaca, dan parameter flag dapat menggunakan MSG_OOB atau MSG_PEEK. Fungsi ini mengembalikan jumlah byte yang dibaca.
integer socket_recvfrom(soket sumber daya, buffer string, panjang integer, host string, port integer)
Fungsi socket_frcvfrom membaca data dan memasukkannya ke dalam cache. Parameter Panjang menetapkan jumlah byte maksimum yang diperbolehkan untuk diterima. Parameter flags dapat diatur ke MSG_OOB atau MSG_PEEK. PHP mengatur parameter host dan port ke nilai yang sesuai untuk dapat memperoleh data yang dikirim dari host.
boolean socket_recvmsg(soket sumber daya, vektor sumber daya, kontrol array, panjang integer, flag integer, host string, port integer)
Fungsi socket_recvmsg membaca data dari soket dan memasukkannya ke dalam sumber daya vektor I/O. Parameter kontrol pengaturan PHP adalah array asosiatif dengan tiga elemen: cmsg_level, cmsg_type, dan cmsg_data. Parameter Panjang adalah parameter panjang yang dilampirkan pada data tentang perolehan data. Parameter Flags menetapkan nilai yang diizinkan dan nilai kembalian. Pada saat penulisan, PHP tidak dapat mengeksekusi semua konstanta keluaran. PHP mengatur parameter host dan port ke nilai yang sesuai untuk mendapatkan data yang dikirim dari host jarak jauh.
(Fungsi Socket_slect tidak diterjemahkan karena saya khawatir kata-katanya tidak menyampaikan maksudnya)
integer socket_select (pembacaan array, penulisan array, pengecualian array, integer timeout_seconds, integer timeout_microseconds)
Fungsi socket_select menunggu perubahan pada soket. PHP mengawasi soket yang diberikan dalam array baca untuk data baru yang masuk. PHP mengawasi aliran yang diberikan dalam array tulis agar siap menerima lebih banyak data untuk kesalahan. Jika jumlah detik yang ditentukan dalam argumen timeout_seconds terlewati, fungsi akan kembali. Gunakan argumen opsional timeout_microseconds untuk menentukan batas waktu kurang dari 1 detik.
Fungsi socket_select mengembalikan jumlah soket yang diubah atau FALSE jika terjadi kesalahan. Jika waktu panggilan habis, fungsi ini mengembalikan nol. Fungsi ini juga memodifikasi array yang diberikan sehingga hanya menyertakan soket yang diubah.
Jika Anda tidak memiliki soket tipe tertentu untuk diperhatikan, Anda dapat meneruskan array kosong atau variabel yang disetel ke NULL.
integer socket_send(soket sumber daya, buffer string, panjang integer, flag integer)
Fungsi socket_send menulis data ke buffer dan kemudian memasukkannya ke dalam koneksi. Anda harus menentukan jumlah maksimum byte yang dapat ditulisi untuk buffer. Anda juga dapat mengatur parameter flags ke kosong, atau ke salah satu dari konstanta gabungan berikut: MSG_DONTROUTE dan MSG_OOB. Fungsi berakhir dan mengembalikan jumlah byte yang ditulis, jika tidak maka akan mengembalikan false.
boolean socket_sendmsg(soket sumber daya, vektor sumber daya, flag integer, alamat string, port integer)
socket_sendmsg mencoba mengirim data ke soket. Sangat cocok untuk soket tanpa koneksi. Parameter Iovector adalah sumber daya yang dihasilkan oleh fungsi socket_iovec_alloc. Anda harus menentukan parameter flag sebagai: NULL, MSG_DONTROUTE, MSG_OOB, atau dua konstanta gabungan. Anda harus menentukan alamat dan port untuk permintaan Internet.
Fungsi Socket_sendmsg mengembalikan nilai true saat mengirim data, tetapi tidak ada jaminan bahwa data akan sampai.
integer socket_sendto(soket sumber daya, buffer string, panjang integer, flag integer, alamat string, port integer)
Fungsi socket_sendto mencoba menulis data ke buffer dan mengirimkannya ke soket. Sangat cocok untuk sebagian besar soket tanpa koneksi. Anda harus menentukan flag sebagai: NULL, MSG_DONTROUTE, MSG_OOB atau kombinasi dua konstanta. Anda juga harus menentukan alamat dan port yang diminta.
Fungsi Socket_sendto mengembalikan nilai true ketika data dikirim, tetapi tidak ada jaminan bahwa data akan sampai.
boolean socket_set_block(soket sumber daya)
Fungsi socket_set_block menyetel soket ke mode blok, yang merupakan mode default. Dalam mode blok, operasi I/O dilakukan berdasarkan permintaan yang telah selesai.
boolean socket_set_nonblock (soket sumber daya)
Fungsi socket_set_nonblock mengatur soket untuk dimasukkan ke mode non-blok apa pun. Dalam mode non-blok, operasi I/O segera kembali, meskipun tidak ada data.
boolean socket_set_option(soket sumber daya, level integer, opsi integer, nilai integer)
Fungsi socket_set_option menetapkan opsi untuk soket. Parameter Level menetapkan konstanta yang menandai level tersebut. Nilai yang valid meliputi: SOL_SOCKET, SOL_TCP dan SOL_UDP. Parameter Opsi harus sesuai dengan konstanta pada tabel Opsi Soket di atas.
boolean socket_shutdown(soket sumber daya, bilangan bulat caranya)
Fungsi socket_shutdown menutup soket untuk I/O. Menyetel ke 0 akan menghentikan penerimaan data, menyetel ke 1 akan menghentikan pengiriman data, dan menyetel ke 2 akan menghentikan kedua operasi.
string socket_strerror (kesalahan bilangan bulat)
Fungsi socket_strerror mengembalikan nomor kesalahan dan informasi kesalahan rinci.
integer socket_write (soket sumber daya, buffer string, panjang integer)
Fungsi socket_write menulis data ke buffer dan kemudian mengeluarkannya ke soket. Anda dapat menentukan parameter panjang untuk menentukan jumlah byte maksimum dalam buffer. Fungsi ini biasanya lebih nyaman daripada socket_send.
boolean socket_writev(soket sumber daya, vektor sumber daya)
Fungsi socket_writev menulis data ke soket melalui vektor I/O.