Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was tun, wenn der Linux-Socket fehlerhaft ist?

Was tun, wenn der Linux-Socket fehlerhaft ist?

藏色散人
藏色散人Original
2023-03-16 09:26:301805Durchsuche

Lösung für verstümmelten Linux-Socket-Code: 1. Öffnen Sie das Terminal-Befehlsfenster. 2. Verwenden Sie den Befehl iconv, um den Zeichensatz der Linux-Datei zu konvertieren. Der Konvertierungsbefehl lautet beispielsweise „iconv -f utf-8 -t gb2312 /server_test/“. Reports/software_.txt > ;/server_test/reports/software_asserts.txt".

Was tun, wenn der Linux-Socket fehlerhaft ist?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.

Was soll ich tun, wenn der Linux-Socket verstümmelt ist?

Linux, Windows, Socket-Verstümmelungsproblem

Problembeschreibung:

Es gibt einen FTP-Client, den ich unter Linux geschrieben habe, und es gibt einen FTP-Server in Windows, der die mit Windows gelieferte Software verwendet Der Server Beim Erstellen eines Verzeichnisses mit Chinesisch oder eines Dateinamens mit Chinesisch ist der chinesische Name verstümmelt

Problemanalyse:

Dies wird zweifellos durch ein Codierungsproblem verursacht. Wie kann also bestätigt werden, welche Codierung verwendet werden soll? Baidu entdeckte später, dass Ubuntu standardmäßig UTF-8 verwendet, während Windows standardmäßig GBK verwendet. Stellen Sie daher sicher, dass Inhalte mit chinesischen Pfaden beim Versenden in GBK konvertiert werden

Lösung:

Konvertieren Sie zwischen UTF8 und gbk:

Linux-Dateizeichensatzkonvertierung (utf8-gb2312)

Zuerst Befehlszeile

Wenn Sie die Kodierungskonvertierung unter Linux durchführen, können Sie dies mit dem Befehl iconv erreichen angegebene Datei von einer Kodierung in eine andere. Die Verwendung des Befehls

iconv lautet wie folgt:

iconv [选项...] [文件...]
  • Spezifikation des Eingabe-/Ausgabeformats:

  -f, --from-code=名称 原始文本编码
  -t, --to-code=名称 输出编码
  • Alle bekannten Zeichensätze auflisten -l, --list

  • Ausgabesteuerung:

  -c   从输出中忽略无效的字符
  -o, --output=FILE   输出文件
  -s, --silent   关闭警告
  --verbose   打印进度信息

Beispiel:

iconv -f utf-8 -t gb2312 /server_test/reports/software_.txt > /server_test/reports/software_asserts.txt

Bitte laden Sie die libiconv-Bibliothek für die folgenden erforderlichen Bibliotheksdateien herunter

Zweitens, Funktionsanwendung

1. Funktion

(1) iconv_t iconv_open( const char *tocode, const char *fromcode);

Diese Funktion erklärt, welche zwei Codierungen konvertiert werden, tocode ist die Zielcodierung und fromcode ist die ursprüngliche Codierung. Diese Funktion gibt ein Konvertierungshandle zur Verwendung durch die folgenden beiden Funktionen zurück.

(2) size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft);

Diese Funktion liest Zeichen aus inbuf, konvertiert sie und gibt sie nach outbuf aus, inbytesleft wird verwendet Um die Anzahl der nicht konvertierten Zeichen aufzuzeichnen, wird outbytesleft verwendet, um den verbleibenden Speicherplatz des Ausgabepuffers aufzuzeichnen.

(3) int iconv_close(iconv_t cd);

Diese Funktion wird verwendet, um das Konvertierungshandle zu schließen und Ressourcen freizugeben.

3. Beispiel: Konvertierungsbeispielprogramm in C-Sprache implementiert

#include <iconv.h>

Diese Implementierung kann plattformübergreifend sein, und ich persönlich denke, dass es besser ist~

ps: Der FTP-Client, den ich zuvor erstellt habe, war unter Windows, weil Party A sagte Es würde dorthin verpflanzt werden, ich bin auf Windows umgestiegen und dann ist das oben genannte Problem aufgetreten. Obwohl ich die im Projekt erschienenen chinesischen Lösungen verglichen habe, habe ich zumindest Erfahrungen bei der Lösung des Problems gesammelt (nicht auf Chinesisch, sondern auf Pinyin)

Verwandte Empfehlungen: „

Linux-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn der Linux-Socket fehlerhaft ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn