๐Ÿš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.tcl
Article #454

[Q] communicate between c & Tcl using socket

#454
From: Kazuma Hirota
Date: Tue, 24 Dec 1996 00:00
74 lines
2539 bytes
ไปฃ็†ๆŠ•็จฟใงใ™ใ€‚
----------------------------------------------------------------

็จฒ่ฆ‹๏ผ ๏ผŠ๏ผŠใจ็”ณใ—ใพใ™ใ€‚
ๅ›ฐใฃใŸๆ™‚ใฎfj ้ ผใฟใชใฎใงใ™ใŒใ€ๆ•…ใ‚ใฃใฆๆŠ•็จฟใงใใพใ›ใ‚“ใ€‚
ไปฃ็†ๆŠ•็จฟใ—ใฆใ‚‚ใ‚‰ใฃใฆใพใ™ใ€‚ใ‚ˆใ‚ใ—ใใŠ้ก˜ใ„่‡ดใ—ใพใ™ใ€‚
fj.lang.tcl ใจ fj.unix ใซใ‚ฏใƒญใ‚นใƒใ‚นใƒˆใ—ใฆใใ‚Œใฆใ„ใ‚‹ใฏใšใงใ™ใ€‚
Followup-To ใฏใ€fj.lang.tcl ใซใŠ้ก˜ใ„ใ—ใพใ™ใ€‚


Tcl7.6 ใจ c ใฎใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎ้–“ใงใ€
inet ใƒ‰ใƒกใ‚คใƒณใฎใ‚ฝใ‚ฑใƒƒใƒˆใ‚’ไฝฟใฃใฆใ€
ใƒ‡ใƒผใ‚ฟใฎใ‚„ใ‚Šๅ–ใ‚Šใ‚’ใ—ใŸใ„ใจ่€ƒใˆใฆใ„ใพใ™ใ€‚

c ใฎๆ–นใงใ€

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/time.h>

main(){

     int fd1, fd2;
     struct  sockaddr_in    saddr,  caddr;
     int     len;

     fd1 = socket(PF_INET, SOCK_STREAM, 0);
     bzero( (char *)&saddr, sizeof(saddr) ); 
     saddr.sin_family = AF_INET;
     saddr.sin_addr.s_addr = INADDR_ANY;
     saddr.sin_port = 8888;
     bind(fd1, (struct sockaddr *)&saddr,sizeof(saddr));
     listen(fd1, 5);
     len = sizeof(caddr);
     fd2 = accept(fd1, (struct sockaddr *)&caddr, &len);
     sleep(10);
     exit(0);
}

ใฎๆง˜ใชไบ‹ใ‚’ใ—ใฆใ€ใ‚ตใƒผใƒๅดใ‚’็”จๆ„ใ—ใ€
tclsh ใ‚’็ซ‹ใกไธŠใ’ใฆใ€
ๆฌกใฎใ‚ˆใ†ใซใ™ใ‚‹ใจใ€

% socket localhost 8888
couldn't open socket: connection refused

ใจใ€ใชใฃใฆใ—ใพใ„ใพใ™ใ€‚

ใ‚‚ใกใ‚ใ‚“ใ€ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆๅดใ‚‚ c ใงๆ›ธใ‘ใฐใ€
ใกใ‚ƒใ‚“ใจ้€šไฟกใงใใพใ™ใ—ใ€
ใ‚ตใƒผใƒใ‚’ Tcl ใงใ€

% socket -server accept 8888
sock3

ใจใ—ใฆ็”จๆ„ใ—ใฆใ‚„ใ‚Œใฐใ€ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆๅดใ‚‚

% socket localhost 8888
sock3

ใจใ€ใคใชใŒใ‚Šใพใ™ใ€‚

ไฝฟ็”จใ—ใŸ OS ใฏใ€FreeBSD 2.1.5 Release ใงใ™ใ€‚
c ใจ Tcl ใง้€šไฟกใ™ใ‚‹ใซใฏใ€ใฉใ†ใ™ใ‚Œใฐใ‚ˆใ„ใฎใงใ—ใ‚‡ใ†ใ‹๏ผŸ

ใ“ใ†ใ„ใ†ใ‚‚ใฎใ‚’่ชญใ‚ใฐใ„ใ„ใ€
ใ“ใฎ่พบใซ hint ใŒใ‚ใ‚‹ใจใ„ใฃใŸใ“ใจใง็ตๆง‹ใงใ™ใฎใง
ใ‚ˆใ‚ใ—ใใŠ้ก˜ใ„่‡ดใ—ใพใ™ใ€‚

-----------------------------------------------------------
Technical Details
Message-ID: <hirota-2412961133100001@kiritsubo.phys.tohoku.ac.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 15a83d,945129da71c5807f,start
X-Google-Attributes: gid15a83d,public
X-Google-Thread: fdef0,945129da71c5807f,start
X-Google-Attributes: gidfdef0,public
From: hirota@iiyo.phys.tohoku.ac.jp (Kazuma Hirota)
Subject: [Q] communicate between c & Tcl using socket
Date: 1996/12/24
Message-ID: <hirota-2412961133100001@kiritsubo.phys.tohoku.ac.jp>
X-Deja-AN: 205690714
distribution: world
content-type: text/plain; charset=iso-2022-jp
organization: Tohoku University
mime-version: 1.0
newsgroups: fj.lang.tcl,fj.unix