PyInstaller는 Python으로 작성된 파일을 독립 실행형 파일로 만들어 주는 프로그램이다.

  • 지원하는 OS : Windows, Linux, Mac OS X, FreeBSD, Solaris, AIX
  • 지원하는 Python 버전: 2.7, 3.3~3.5 (2017년3월26일 현재)
  • 공식 홈페이지 : http://www.pyinstaller.org

 

<설치하기>

 

<사용하기>

  • 기본적인 사용 방법은 pyinstaller 파일이름.py을 입력하면 된다. (예:pyinstaller example.py)
  • -w(혹은 --windowed, --noconsole) 옵션을 사용하면 실행시 cmd창이 나타나지 않게 할 수 있다.(예:pyinstaller -w example.py)
  • -F(혹은 --onefile) 옵션을 사용하면 모듈 및 기타 실행에 필요한 관련 파일을 포함한 exe 파일로 만들 수 있다.(예:pyinstaller -F -w example.py)
  • 보다 자세한 옵션은 -h로 확인 가능하다.(예:pyinstaller -h)

<증상>

  1. 3월4일자 업데이트(버전 41.0.2272.76 m) 이후 크롬 탭 제목과 메뉴의 한글 폰트가 Direct Write 기능이 적용된 상태로 설정이 되어 아래 스샷과 같이 가독성이 매우 떨어지는 현상이 발생.
  2. "chrome://flags"에서 directwrite 기능을 사용중지로 해도 적용이 안됨.
<해결방법>
  1. 바탕화면과 작업 표시줄에 있는 크롬 아이콘을 마우스 오른쪽 버튼을 눌려서 '속성'을 누른다.
  2. 바로 가기 탭을 누른 후, 대상(T)의 내용을 아래와 같이 변경한다.
  3. 변경 전: "C:\Program Files\Google\Chrome\Application\chrome.exe"

    변경 후: "C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-directwrite-for-UI

  4. 적용 버튼을 누른 후에 크롬을 다시 실행한다.

<참고>

https://productforums.google.com/forum/#!category-topic/chrome-ko/windows7/PFPG-U9KL_E (XYzz님 답변댓글)


Virtual Box로 설치한 리눅스 이미지를 타 시스템으로 옮기거나, 복사를 하여 사용할 경우, Virtual Box나 리눅스 이미지 내에서의 모든 네트워크 설정이 정상임에도 불구하고, 네트워킹을 할 수 없는 경우가 발생할 수 있습니다.

원인은 udev(A Userspace Implementation of devfs)에 의해서 네트워크 아답터의 디바이스 정보가 바뀌었기 때문입니다. 보통은 기존에 eth0으로 사용했었다면, eth1으로 변경되어 있는 경우가 많습니다.

해결하는 방법은 /etc/udev/rules.d 디렉토리에 보면 xx-persistent-net.rules(xx는 숫자)라는 파일이 있는데, 이것을 삭제하거나, 혹은 올바르게 설정을 하여 주고 재부팅을 하면, 정상적으로 네트워킹을 할 수 있게 됩니다.

저의 경우는 eth0으로 설정되어 있어야 하는데, 아래와 같이 eth1으로 설정되어 있었습니다.

root@codememo:~# cd /etc/udev/rules.d/
root@codememo:/etc/udev/rules.d# ls
70-persistent-cd.rules         70-persistent-net.rules
root@codememo:/etc/udev/rules.d# vi 70-persistent-net.rules
# This file was automatically generated by the //lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:19:ec:76", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
~
~
~
~
~
~
~
~
~
~
~
~
~
~
-- VISUAL --                                        8         8,129         All

 

윈도우7에서 Notepad++의 플러그인 중에 FTP Synchronize를 일반 사용자 계정에서 사용할 때, 원격지의 FTP 서버로부터 파일을 제대로 불러올 수 없습니다. 물론 Notepad++을 관리자 권한으로 실행하면 문제가 발생하지는 않지만, 관리자 권한으로 프로그램을 실행하고 있는 동안에는 사용자 PC안에 있는 파일들을 팝업 메뉴(마우스 오른쪽 버튼을 누르면 나오는 메뉴)에 등록 되어 있는 Notepad++로는 불러올 수 없는 문제가 생깁니다.(직접 프로그램에서 파일 열기로 불러오는 것은 문제가 없습니다.) 

문제의 원인은 원격지의 FTP 서버에 접속할 때, 접속자의 PC에 접근하는 폴더와 파일들을 Cache하여 저장하는데, 이때 저장할 폴더에 권한이 없는 경우 문제가 발생합니다. 

이 문제를 해결하기 위해서는 Notepad++에서 설정 방법도 있습니다만, 윈도우7에서는 그 방법보다는 C:\Program Files\Notepad++\plugins\FTP_synchronize 폴더에 일반유저(Users그룹)가 수정과 쓰기를 할 수 있도록 권한(혹은 모든 권한)을 추가하여 주는 것이 관리적인 측면에서는 더 좋습니다.

Warning: phpinfo() [function.phpinfo]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.

PHP 설치 후, phpinfo()함수로 설치된 정보 내역을 확인할 때, date 부분에서 위와 같은 메세지가 있다면, php.ini 설정 파일에서 timezone이 설정되지 않았기 때문에 나타나는 메세지입니다.

php.ini 파일을 열어서 다음과 같은 내용을 찾아서 timezone을 설정하여 주면 됩니다.
[Date]
; Defines the default timezone used by the data functions
; http://php.net/data.timezone
date.timezone = Asia/Seoul


inetd을 이용하여 서비스 데몬들을 관리할 때, 허용하지 않은 서비스로 누군가 접근을 시도할 경우 서버 계정의 메일로 그 내용을 받아볼 수 있도록 설정을 할 수 있습니다.

물론 이것을 응용하여 sms와 연동하면 실시간으로 문자 메세지를 받아볼 수 있으나, 단순한 포트 스캐닝의 경우에도 동작하기 때문에 불필요한 메세지를 받을 수도 있습니다.

/etc/hosts.deny 파일에 다음과 같은 내용을 작성합니다.

#
# hosts.deny This file describes the names of the hosts which are
#  *not* allowed to use the local INET services, as decided
#  by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!

ALL: ALL: spawn ( \
echo -e "\n\
TCP Wrappers\:  Connection Refused\n\
By\:                    $(uname -n)\n\
Process\:               %d (pid %p)\n\
User\:                  %u\n\
Host\:                  %c\n\
Date\:                  $(date)\n\
" | /bin/mail -s "From
tcpd@$(uname -n).  %u@%h -> %d." 메일을 받고자하는 계정명)

 저의 경우는 codememo 계정으로 메일을 받기 위해 다음과 같이 hosts.deny를 작성하였습니다.

#
# hosts.deny This file describes the names of the hosts which are
#  *not* allowed to use the local INET services, as decided
#  by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!

ALL: ALL: spawn ( \
echo -e "\n\
TCP Wrappers\:  Connection Refused\n\
By\:                    $(uname -n)\n\
Process\:               %d (pid %p)\n\
User\:                  %u\n\
Host\:                  %c\n\
Date\:                  $(date)\n\
" | /bin/mail -s "From
tcpd@$(uname -n).  %u@%h -> %d." codememo)

 이렇게 작성하고나서 inetd를 재시작하여 주면, hosts.allow에서 허용하지 않은 IP나 혹은 서비스로 접속 시도가 있을 경우, 설정된 계정으로 메일이 옵니다.

-rw-r--r-- 1 root root   2163 2009-12-01 20:40 aaa_base-13.0-i486-2
-rw-r--r-- 1 root root   2396 2009-12-01 20:40 aaa_elflibs-13.0-i486-2
-rw-r--r-- 1 root root  11895 2009-12-03 03:22 aaa_terminfo-5.7-noarch-1
-rw-r--r-- 1 root root   2918 2009-12-01 20:41 acl-2.2.47_1-i486-1
-rw-r--r-- 1 root root   1478 2009-12-01 20:41 acpid-1.0.8-i486-2
-rw-r--r-- 1 root root   1507 2009-12-01 20:41 apmd-3.2.2-i486-2
-rw-r--r-- 1 root root   2428 2009-12-01 20:41 attr-2.4.43_1-i486-1
-rw-r--r-- 1 root root   3574 2009-12-01 20:59 autoconf-2.63-noarch-1
-rw-r--r-- 1 root root   1727 2009-12-01 21:38 autofs-3.1.7-i386-1
-rw-r--r-- 1 root root   5585 2009-12-01 20:59 automake-1.10.1-noarch-1
-rw-r--r-- 1 root root   1521 2009-12-01 20:41 bash-3.1.017-i486-2
-rw-r--r-- 1 root root   1124 2009-12-01 20:41 bin-11.1-i486-1
-rw-r--r-- 1 root root   7457 2009-12-01 21:00 binutils-2.18.50.0.9-i486-1
-rw-r--r-- 1 root root   5755 2009-12-01 21:00 bison-2.4.1-i486-1
-rw-r--r-- 1 root root   1285 2009-12-01 20:41 bzip2-1.0.5-i486-1
-rw-r--r-- 1 root root    710 2009-12-01 21:00 ccache-2.4-i486-1
-rw-r--r-- 1 root root   5884 2009-12-01 21:01 clisp-2.47-i486-1
-rw-r--r-- 1 root root  20152 2009-12-01 21:02 cmake-2.6.2-i486-1
-rw-r--r-- 1 root root   8103 2009-12-01 20:42 coreutils-7.4-i486-1
-rw-r--r-- 1 root root    867 2009-12-01 21:02 cscope-15.6-i486-1
-rw-r--r-- 1 root root   2131 2009-12-01 21:02 cvs-1.11.23-i486-1
-rw-r--r-- 1 root root    859 2009-12-01 20:42 cxxlibs-6.0.10-i486-1
-rw-r--r-- 1 root root   1085 2009-12-01 20:42 dcron-2.3.3-i486-6
-rw-r--r-- 1 root root   5006 2009-12-01 21:02 dev86-0.16.17-i486-1
-rw-r--r-- 1 root root 143790 2009-12-01 20:43 devs-2.3.1-noarch-25
-rw-r--r-- 1 root root   5660 2009-12-03 05:29 dialog-1.1_20080819-i486-2
-rw-r--r-- 1 root root   2651 2009-12-01 20:55 diffutils-2.8.1-i486-3
-rw-r--r-- 1 root root   1649 2009-12-01 21:02 distcc-2.18.3-i486-2
-rw-r--r-- 1 root root    968 2009-12-01 20:43 dosfstools-2.11-i486-1
-rw-r--r-- 1 root root  33538 2009-12-01 21:03 doxygen-1.5.8-i486-1
-rw-r--r-- 1 root root   4673 2009-12-01 20:43 e2fsprogs-1.41.8-i486-1
-rw-r--r-- 1 root root   1030 2009-12-01 20:43 etc-13.0-i486-2
-rw-r--r-- 1 root root    911 2009-12-01 21:38 ethtool-6-i486-1
-rw-r--r-- 1 root root   4976 2009-12-01 20:43 findutils-4.4.2-i486-1
-rw-r--r-- 1 root root   2685 2009-12-01 21:03 flex-2.5.35-i486-1
-rw-r--r-- 1 root root   2403 2009-12-01 20:43 floppy-5.4-i386-3
-rw-r--r-- 1 root root   4685 2009-12-01 20:43 gawk-3.1.6-i486-1
-rw-r--r-- 1 root root   8746 2009-12-01 21:04 gcc-4.3.3-i486-3
-rw-r--r-- 1 root root 274196 2009-12-01 21:06 gcc-g++-4.3.3-i486-3
-rw-r--r-- 1 root root   2161 2009-12-01 21:06 gcc-gfortran-4.3.3-i486-3
-rw-r--r-- 1 root root 103813 2009-12-01 21:08 gcc-gnat-4.3.3-i486-3
-rw-r--r-- 1 root root   3889 2009-12-01 21:13 gcc-java-4.3.3-i486-3
-rw-r--r-- 1 root root   2300 2009-12-01 21:13 gcc-objc-4.3.3-i486-3
-rw-r--r-- 1 root root   3534 2009-12-01 21:14 gdb-6.8-i486-1
-rw-r--r-- 1 root root  13308 2009-12-01 21:14 gettext-tools-0.17-i486-3
-rw-r--r-- 1 root root  33649 2009-12-01 21:15 git-1.6.4-i486-1
-rw-r--r-- 1 root root 309918 2009-12-01 21:32 glibc-2.9-i486-3
-rw-r--r-- 1 root root 223607 2009-12-01 21:35 glibc-i18n-2.9-i486-3
-rw-r--r-- 1 root root   1017 2009-12-01 21:36 glibc-profile-2.9-i486-3
-rw-r--r-- 1 root root   7811 2009-12-01 20:44 glibc-solibs-2.9-i486-3
-rw-r--r-- 1 root root  67800 2009-12-01 20:44 glibc-zoneinfo-2.9-noarch-3
-rw-r--r-- 1 root root   1168 2009-12-01 21:15 gperf-3.0.3-i486-1
-rw-r--r-- 1 root root   1873 2009-12-01 20:44 gpm-1.20.1-i486-5
-rw-r--r-- 1 root root   4892 2009-12-01 20:44 grep-2.5.4-i486-1
-rw-r--r-- 1 root root  12580 2009-12-01 21:15 guile-1.8.7-i486-1
-rw-r--r-- 1 root root   1287 2009-12-01 20:44 gzip-1.3.12-i486-1
-rw-r--r-- 1 root root   1065 2009-12-01 20:45 hdparm-9.3-i486-1
-rw-r--r-- 1 root root   2969 2009-12-01 21:15 indent-2.2.10-i486-1
-rw-r--r-- 1 root root    898 2009-12-01 21:39 inetd-1.79s-i486-8
-rw-r--r-- 1 root root   1552 2009-12-01 20:45 infozip-6.0-i486-1
-rw-r--r-- 1 root root   1132 2009-12-01 21:15 intltool-0.40.5-i486-1
-rw-r--r-- 1 root root   3455 2009-12-01 21:39 iproute2-2.6.29_1-i486-2
-rw-r--r-- 1 root root   5457 2009-12-01 21:39 iptables-1.4.3.2-i486-1
-rw-r--r-- 1 root root   1138 2009-12-01 21:39 iputils-s20070202-i486-2
-rw-r--r-- 1 root root   1033 2009-12-01 20:45 isapnptools-1.26-i486-2
-rw-r--r-- 1 root root   1498 2009-12-01 20:55 ispell-3.2.06-i386-1
-rw-r--r-- 1 root root  33449 2009-12-01 20:45 kbd-1.15-i486-3
-rw-r--r-- 1 root root   3374 2009-12-01 20:45 kernel-firmware-2.6.29.6-noarch-2
-rw-r--r-- 1 root root    967 2009-12-01 20:45 kernel-generic-2.6.29.6-i486-2
-rw-r--r-- 1 root root   1094 2009-12-01 20:45 kernel-generic-smp-2.6.29.6_smp-i686-2
-rw-r--r-- 1 root root  21127 2009-12-01 21:15 kernel-headers-2.6.29.6_smp-x86-2
-rw-r--r-- 1 root root    968 2009-12-01 20:46 kernel-huge-2.6.29.6-i486-2
-rw-r--r-- 1 root root   1095 2009-12-01 20:46 kernel-huge-smp-2.6.29.6_smp-i686-2
-rw-r--r-- 1 root root 150413 2009-12-01 20:48 kernel-modules-2.6.29.6-i486-2
-rw-r--r-- 1 root root 161276 2009-12-01 20:51 kernel-modules-smp-2.6.29.6_smp-i686-2
-rw-r--r-- 1 root root    893 2009-12-01 20:51 less-418-i486-2
-rw-r--r-- 1 root root    822 2009-12-01 20:51 lha-114i-i486-1
-rw-r--r-- 1 root root   1994 2009-12-01 21:16 libtool-1.5.26-i486-1
-rw-r--r-- 1 root root   2491 2009-12-01 20:51 lilo-22.8-i486-14
-rw-r--r-- 1 root root   1031 2009-12-01 20:56 lsof-4.78-i486-1
-rw-r--r-- 1 root root   7345 2009-12-01 21:40 lynx-2.8.6rel.5-i486-1
-rw-r--r-- 1 root root   2976 2009-12-01 21:16 m4-1.4.13-i486-1
-rw-r--r-- 1 root root   3390 2009-12-01 21:16 make-3.81-i486-1
-rw-r--r-- 1 root root   5063 2009-12-01 20:56 man-1.6f-i486-2
-rw-r--r-- 1 root root  61222 2009-12-01 20:56 man-pages-3.22-noarch-2
-rw-r--r-- 1 root root   8726 2009-12-01 20:57 mc-20090714_git-i486-1
-rw-r--r-- 1 root root  25170 2009-12-01 21:16 mercurial-1.2.1-i486-1
-rw-r--r-- 1 root root   1317 2009-12-01 20:52 mkinitrd-1.3.4-i486-3
-rw-r--r-- 1 root root   1465 2009-12-01 20:52 module-init-tools-3.6-i486-2
-rw-r--r-- 1 root root    911 2009-12-01 20:57 most-5.0.0a-i486-2
-rw-r--r-- 1 root root    999 2009-12-01 21:16 nasm-2.05.01-i486-1
-rw-r--r-- 1 root root   1070 2009-12-01 20:52 ncompress-4.2.4-i486-1
-rw-r--r-- 1 root root   1484 2009-12-01 21:40 net-tools-1.60-i486-2
-rw-r--r-- 1 root root    854 2009-12-01 21:40 netkit-ftp-0.17-i486-1
-rw-r--r-- 1 root root    973 2009-12-01 21:40 netkit-ntalk-0.17-i486-2
-rw-r--r-- 1 root root   1335 2009-12-01 21:40 network-scripts-13.0-noarch-2
-rw-r--r-- 1 root root  20252 2009-12-01 21:41 nmap-5.00-i486-1
-rw-r--r-- 1 root root   1617 2009-12-01 20:52 openssl-solibs-0.9.8k-i486-2
-rw-r--r-- 1 root root   7716 2009-12-01 21:16 oprofile-0.9.4-i486-2
-rw-r--r-- 1 root root   1757 2009-12-01 21:17 p2c-1.21alpha2-i486-3
-rw-r--r-- 1 root root   1014 2009-12-01 20:52 patch-2.5.4-i486-1
-rw-r--r-- 1 root root   1242 2009-12-01 20:52 pciutils-3.1.3-i486-1
-rw-r--r-- 1 root root 130170 2009-12-01 21:18 perl-5.10.0-i486-1
-rw-r--r-- 1 root root   1269 2009-12-01 21:41 pidentd-3.0.19-i486-1
-rw-r--r-- 1 root root   1082 2009-12-01 21:19 pkg-config-0.23-i486-2
-rw-r--r-- 1 root root   1358 2009-12-01 20:52 pkgtools-13.0-noarch-3
-rw-r--r-- 1 root root   1152 2009-12-01 21:19 pmake-1.111-i486-3
-rw-r--r-- 1 root root   1844 2009-12-01 20:52 procps-3.2.7-i486-2
-rw-r--r-- 1 root root 216875 2009-12-01 21:22 python-2.6.2-i486-3
-rw-r--r-- 1 root root   2005 2009-12-01 20:52 quota-3.17-i486-1
-rw-r--r-- 1 root root   1118 2009-12-01 21:22 rcs-5.7-i486-2
-rw-r--r-- 1 root root   1287 2009-12-01 20:53 reiserfsprogs-3.6.21-i486-1
-rw-r--r-- 1 root root   7954 2009-12-01 20:57 rpm-4.7.0-i486-2
-rw-r--r-- 1 root root    764 2009-12-01 20:53 rpm2tgz-1.1-i486-1
-rw-r--r-- 1 root root 682937 2009-12-01 21:24 ruby-1.8.7_p174-i486-1
-rw-r--r-- 1 root root    616 2009-12-01 20:57 rzip-2.1-i486-1
-rw-r--r-- 1 root root   2117 2009-12-01 20:57 screen-4.0.3-i486-1
-rw-r--r-- 1 root root   4001 2009-12-01 20:53 sed-4.1.5-i486-1
-rw-r--r-- 1 root root   8498 2009-12-01 20:53 shadow-4.0.3-i486-18
-rw-r--r-- 1 root root   4178 2009-12-01 20:53 sharutils-4.7-i486-1
-rw-r--r-- 1 root root   1470 2009-12-01 20:57 slackpkg-2.80.2-noarch-3
-rw-r--r-- 1 root root   1154 2009-12-01 20:53 slocate-3.1-i486-3
-rw-r--r-- 1 root root   1745 2009-12-01 20:53 smartmontools-5.38-i486-1
-rw-r--r-- 1 root root    930 2009-12-01 20:53 splitvt-1.6.5-i486-1
-rw-r--r-- 1 root root   1271 2009-12-01 21:24 strace-4.5.18-i486-1
-rw-r--r-- 1 root root  14617 2009-12-01 21:25 subversion-1.6.4-i486-1
-rw-r--r-- 1 root root   1293 2009-12-01 20:57 sudo-1.6.8p12-i486-1
-rw-r--r-- 1 root root 200961 2009-12-01 21:26 swig-1.3.38-i486-1
-rw-r--r-- 1 root root   1351 2009-12-01 20:53 sysfsutils-2.1.0-i486-1
-rw-r--r-- 1 root root   1443 2009-12-01 20:53 sysklogd-1.4.1-i486-10
-rw-r--r-- 1 root root   3216 2009-12-01 20:53 syslinux-3.52-i486-1
-rw-r--r-- 1 root root   1477 2009-12-01 20:54 sysvinit-2.86-i486-6
-rw-r--r-- 1 root root   1401 2009-12-01 20:54 sysvinit-functions-8.53-i486-2
-rw-r--r-- 1 root root    852 2009-12-01 20:54 sysvinit-scripts-1.2-noarch-30
-rw-r--r-- 1 root root   4488 2009-12-01 20:54 tar-1.22-i486-2
-rw-r--r-- 1 root root   1484 2009-12-01 21:41 tcp_wrappers-7.6-i486-1
-rw-r--r-- 1 root root   1007 2009-12-01 21:41 telnet-0.17-i486-1
-rw-r--r-- 1 root root    838 2009-12-01 20:54 time-1.7-i486-1
-rw-r--r-- 1 root root   1044 2009-12-01 21:41 traceroute-1.4a12-i386-2
-rw-r--r-- 1 root root    846 2009-12-01 20:54 tree-1.5.2.2-i486-1
-rw-r--r-- 1 root root   2969 2009-12-01 20:54 udev-141-i486-3
-rw-r--r-- 1 root root    782 2009-12-01 20:54 unarj-265-i486-1
-rw-r--r-- 1 root root    954 2009-12-01 20:54 usbutils-0.82-i486-2
-rw-r--r-- 1 root root    827 2009-12-01 20:54 utempter-1.1.4-i486-1
-rw-r--r-- 1 root root   7415 2009-12-01 20:54 util-linux-ng-2.14.2-i486-1
-rw-r--r-- 1 root root  60601 2009-12-01 20:59 vim-7.2.245-i486-1
-rw-r--r-- 1 root root   1136 2009-12-01 20:55 which-2.20-i486-1
-rw-r--r-- 1 root root   1965 2009-12-01 21:41 whois-4.7.26-i486-1
-rw-r--r-- 1 root root   1954 2009-12-01 20:55 xz-4.999.8beta-i486-1


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace EchoClientSampleCode
{
    class Program
    {
        private static string hostname = "ServerAddress";
        private static int port = ServerPort;
        private static TcpClient tc;
        private static NetworkStream ns;
        private static StreamReader sr;
        private static StreamWriter sw;
        private static string input;

        static void Main(string[] args)
        {
            try
            {
                tc = new TcpClient();
                tc.Connect(hostname, port);
            }
            catch (Exception exc)
            {
                Console.WriteLine("Couldn't to connect...");
            }

            ns = tc.GetStream();
            sr = new StreamReader(ns, System.Text.Encoding.Default);
            sw = new StreamWriter(ns, System.Text.Encoding.Default);

            try
            {
                while (tc.Connected)
                {
                    input = Console.ReadLine();
                    if (input == "quit") break;
                    sw.WriteLine(input);
                    sw.Flush();
                    Console.WriteLine(sr.ReadLine());
                }
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.Message);
            }

            Console.WriteLine("Disconnecting from server...");
            sr.Close();
            sw.Close();
            ns.Close();
            tc.Close();
            Console.WriteLine("Press Enter key.");
            Console.ReadLine();
        }
    }
}

+ Recent posts