Posso pesquisar e já olhei para a entrada da Wikipedia e em alguns outros lugares, mas mesmo tendo alguma experiência em programação, realmente não entendo o conceito. Você pode me tratar como uma criança de 10 anos e me dar uma explicação clara sobre a comunicação por soquete?
20
Respostas:
Deixe-me dar um exemplo: diga que deseja se comunicar / conversar com seu amigo, que mora no seu endereço. Para que isso aconteça, você deve estabelecer um "canal de comunicação". Digamos que você queira fazer essa comunicação usando telefones. Você sabe que existe uma rede de linhas telefônicas na cidade que se estende a todas as casas.
Agora, há uma tomada de telefone em sua casa e uma na casa de seus amigos. Para que a comunicação ocorra, você e seu amigo precisam se conectar à rede conectando o telefone ao soquete, nas duas extremidades da comunicação. Soquetes na programação são os mesmos, conceitualmente, que os soquetes do telefone.
Na programação, você tem dois processos (executando programas) que desejam se comunicar. Para isso, eles precisam estabelecer um vínculo de comunicação entre si. Novamente, há uma rede disponível, eles só precisam se conectar a essa rede usando algum tipo de soquete. Soquetes Unix são um desses soquetes que fornece essa conectividade / conectividade à rede. Portanto, em cada um dos dois programas, você terá algum código que faz o trabalho de conectar-se à rede por soquetes.
O resto são detalhes.
fonte
Os soquetes Unix são um soquete bidirecional - assim como um soquete baseado em IP, com o qual você provavelmente está familiarizado, e semelhante a um pipe, com o qual você provavelmente está familiarizado.
Eles têm um pequeno conjunto de propriedades interessantes:
Essencialmente, eles são equivalentes a qualquer outro soquete - eles têm propriedades um pouco mais interessantes que os tubos, mas não são radicalmente diferentes. Eles geralmente têm maior latência de IPC do que um pipe e buffers geralmente maiores - embora você possa ajustar isso e isso depende da plataforma.
A propriedade final interessante a ser lembrada é que eles usam o sistema de arquivos como seu espaço para nome - assim como um canal nomeado, em vez de um canal anônimo, no qual o software sem relacionamento anterior pode se comunicar. (Soquetes de espaço para nome abstratos são os mesmos, mas o caminho "arquivo" não precisa existir.)
Não há nada mais profundo do que isso - eles não têm nenhuma propriedade oculta super secreta que os torne radicalmente diferentes de um pipe típico ou de uma conexão TCP com o host local.
fonte
Programar soquetes Linux, Parte 1: Usar TCP / IP funcionou muito bem para mim. Começa com uma introdução às redes IP e às camadas de rede e depois mostra como implementar um servidor e cliente de eco simples em C e Python.
fonte