Ini ialah perintah merangkum yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
encapsulate - pemultipleks beberapa saluran pada satu soket dengan pensampelan alat kawalan jauh
proses status keluar, dan sediakan penamatan perbualan tanpa menutup soket.
paip jaring 4.2
SINOPSIS
merangkum --fd n [ --verbose ] [ --subproc [ --infd n[=sid] ] [ --outfd n[=sid] ] [
--dupleks n[=sid] ] [ --Dupleks n[=sid] ] [ --DUPLEX n[=sid] ] [ --utamakan-tempatan ] [
--lebih suka-jauh ] [ --tempatan sahaja ] [ --jauh-sahaja ] ] [ --pelanggan ] [ --pelayan ]
-[#n][v][s[in][on][dn][ion][oin][l][r][L][R]] arahan args ...
DESCRIPTION
merangkum melaksanakan Session Control Protocol (SCP) dengan cara yang terhad.
merangkum memultipleks beberapa saluran maya pada satu soket menggunakan SCP.
merangkum menghantar status keluar program tempatan ke hujung jauh melalui a
saluran SCP terpelihara dan menerima kembali status keluar jauh. merangkum menyediakan
sempadan perbualan tanpa menutup soket.
Bendera mungkin muncul dalam sebarang susunan. Hujah pertama yang bukan bendera ialah arahan untuk
bertelur (dengan andaian --subproc dinyatakan, ralat sebaliknya).
PILIHAN
--fd n, -#n : nyatakan deskriptor fail soket yang akan kami pemultiplekskan subproses
saluran berakhir. Hujah ini diperlukan
--verbose, -v : Cetak maklumat tambahan (termasuk notis hak cipta) ke stderr.
--subproc, -s : melahirkan subproses. Anda mesti membekalkan a arahan and args. Jika anda meninggalkan ini
bendera, maka anda mesti tidak bekalan a arahan and args. Jika anda meninggalkan bendera ini, merangkum
akan menyalin input daripada stdin ke saluran keluar dalam soket bermux SCP dan menyalin ke
stdout daripada saluran masuk dalam soket SCP-muxed. Jika anda meninggalkan bendera ini, semua
bendera saluran input dan output adalah haram.
--infd n, -in : tentukan saluran input. Jika terdapat subproses, ia akan dapat
dibaca daripada deskriptor n. Jika tiada subproses merangkum akan membaca daripadanya
deskriptor n (ini adalah kekutuban bertentangan untuk saluran SCP).
--outfd n, -on : tentukan saluran keluaran. Jika terdapat subproses, ia akan dapat
tulis kepada deskriptor n. Jika tiada subproses merangkum akan menulis kepada deskriptornya
n (ini adalah kekutuban bertentangan untuk saluran SCP).
--dupleks n, -ion : tentukan saluran dwiarah. alat kawalan jauh merangkum akan menghantar
SCP SYN paket, dan tempatan akan bertindak balas dengan SYN untuk sesi yang sama. The
subproses akan dapat membaca dan menulis ke deskriptor fail n. Subproses harus digunakan
yang sockdown(1) atur cara jika ia mesti menutup satu arah sambil meninggalkan arah yang lain
buka.
--Dupleks n, -dn : tentukan saluran dwiarah. The --pelanggan akhir dari merangkum
sambungan menghantar paket SCP SYN dan --pelayan membalas dengan SYN untuk sesi yang sama.
Subproses akan dapat membaca dan menulis ke deskriptor fail n. Subproses sepatutnya
menggunakan sockdown(1) atur cara jika ia mesti menutup satu arah sambil meninggalkan yang lain
arah terbuka.
--DUPLEX n, -oin : tentukan saluran dwiarah. Orang tempatan merangkum akan menghantar
Paket SCP SYN, dan alat kawalan jauh akan bertindak balas dengan SYN untuk sesi yang sama. The
subproses akan dapat membaca dan menulis ke deskriptor fail n. Subproses harus digunakan
yang sockdown(1) atur cara jika ia mesti menutup satu arah sambil meninggalkan arah yang lain
buka.
Semua bentuk panjang saluran dwiarah mempunyai pilihan =sid komponen itu
boleh digunakan untuk menentukan ID Sesi SCP. Ini tidak begitu berguna apabila menyambung
merangkum kepada contoh lain sendiri, tetapi boleh berguna apabila menyambung kepada yang lain
sekeping perisian yang melaksanakan SCP.
--utamakan-tempatan, -l : jika kedua-dua subproses jauh dan tempatan keluar dengan bukan sifar
kod (salah), merangkum akan keluar dengan kod yang sama seperti subproses tempatan. ini
is yang lalai.
--lebih suka-jauh, -r : jika kedua-dua subproses jauh dan tempatan keluar dengan bukan sifar
kod (salah), merangkum akan keluar dengan kod yang sama seperti subproses jauh.
--tempatan sahaja, -L : merangkum keluar dengan status tempatan dan mengabaikan status jauh.
--jauh-sahaja, -R : merangkum keluar dengan status jauh dan mengabaikan status setempat.
SESI ID DAN SUBPROSES SALURAN
Apabila menentukan saluran untuk subproses, susunan bendera adalah sangat penting.
Setiap bendera kepada tempatan merangkum mesti mempunyai bendera yang sepadan pada alat kawalan jauh
merangkum yang berada dalam kedudukan yang sama (dalam senarai saluran). Deskriptor
nombor tidak perlu sepadan, tetapi kedudukan dan jenis setiap saluran mesti.
Faktor yang merumitkan adalah bahawa aliran data tersirat oleh --infd and --outfd adalah
berbeza apabila anda menentukan subproses.
Jauh Tempatan
--infd w/subproc --outfd w/subproc
--infd w/subproc --infd
--infd --infd w/subproc
--infd --outfd
--outfd w/subproc --infd w/subproc
--outfd w/subproc --outfd
--outfd --outfd w/subproc
--outfd --infd
--dupleks --DUPLEX
--Dupleks --Dupleks
--DUPLEX --dupleks
KANAN:
l$ merangkum --infd 0 --dupleks 5
r$ merangkum --outfd 1 --DUPLEX 5
SALAH:
l$ merangkum --infd 0 --dupleks 5
r$ merangkum --outfd 1 --dupleks 5
--dupleks mesti mempunyai yang sepadan --DUPLEX di hujung terpencil.
l$ merangkum --infd 0 --dupleks 5
r$ merangkum --DUPLEX 5 --outfd 1
--infd mesti mempunyai yang sepadan --outfd di hujung terpencil. Ia tidak teratur dan
saluran akan diperuntukkan secara tidak betul yang membawa kepada ralat protokol.
Jika anda memahami kod sumber untuk merangkum, anda boleh melanggar garis panduan ini, tetapi
ia tidak perlu, terdedah kepada kesilapan, dan tidak dimaklumkan; selain itu, anda tidak begitu memahami
kod sumber. jangan buat.
CLIENT -VS- SERVER
SCP mempunyai polariti tersirat. Satu hujung adalah pelayan dan hujung yang satu lagi adalah pelanggan.
Anda boleh menentukan hujung mana yang menggunakan --pelanggan and --pelayan. Jika anda tidak menyatakan
satu, kemudian merangkum akan membandingkan alamat kedua-dua hujung soket (dinyatakan
bersama --fd) dan gunakan algoritma deterministik untuk memilih satu untuk menjadi pelayan dan satu untuk menjadi
klien. Jika alamat jauh soket tidak sepadan dengan alat kawalan jauh
merangkum (cth paket sedang dimajukan melalui gateway terpasang, alamat
sedang menyamar, atau sebaliknya dianggap tidak konsisten oleh kedua-dua hujungnya) kemudian
algoritma ini mempunyai peluang yang baik untuk "gagal" dan menetapkan kedua-duanya menjadi pelayan atau kedua-duanya
menjadi pelanggan.
Satu-satunya masa yang patut anda biarkan merangkum pilih antara klien dan pelayan ada
situasi interaktif. Kemungkinan besar sistem perisian dibina di sekelilingnya merangkum
akan digunakan semula dalam situasi di mana penetapan polariti automatik gagal.
CONTOH
Berikut ialah daemon pemindahan fail mudah:
pelayan$ faucet 3001 --sekali --fd3 \
sh -c 'sementara ~/src/netpipes4.0/encapsulate --fd 3 -so5i4 \
sh -c "fname=`cat 0<&4`; echo \$fname; cat < \$fname 1>&5"; \
berbuat benar; selesai'
pelayan $ hos pelanggan 3001 --cuba semula 10 --tunda 1 --fd3 \
sh -c 'semasa membaca fname; lakukan \
~/src/netpipes4.0/encapsulate --fd 3 -si4o5 \
sh -c "echo $fname 1>&5; exec 5>&-; cat 0<&4" \
|| pecah; selesai'
Hanya taip nama fail yang anda ingin dapatkan semula ke dalam hos dan tekan return. Ia
akan dibuang ke stdout. Ulang sehingga pencerahan atau bosan.
PENYELESAIAN MASALAH
Adakah anda tentukan --pelanggan and --pelayan betul ke? Satu pihak harus menjadi pelayan, sebelah lagi
sepatutnya menjadi pelanggan. Jika anda menentukan kedua-duanya sebagai pelayan atau kedua-duanya sebagai pelanggan, anda telah membuat a
kesilapan. Jangan bergantung pada pengesanan kekutuban automatik. Manakala secara teorinya a
algoritma yang sangat baik, ia ditipu dengan sangat mudah.
Lakukan semua tugasan saluran anda (--infd et al) sepadan? Jika anda salah faham,
merangkum akan panik dan menitis spooge ke seluruh kasut anda.
Untuk mengelakkan kebuntuan, pastikan anda menutup saluran apabila anda tidak memerlukannya
lagi. Gunakan operator ubah hala >&- dalam sh atau bash. Pastikan anda menutup semuanya
proses latar belakang juga.
Tidak dapat membaca stdin daripada proses yang telah berlatarbelakangkan & ? Bash menutup fail
deskriptor 0 untuk mana-mana subproses yang berlatarbelakangkan (cth (perintah&) ). Anda boleh dapatkan
sekitar ini dengan menyalin 0 ke deskriptor lain, dan kemudian menyalinnya semula dalam
proses berlatarbelakangkan.
( ( kucing 0<&3 ) & ) 3<&0
Gunakan encapsulate dalam talian menggunakan perkhidmatan onworks.net