sinsftp
❶ 列举下常用端口有哪些
netstat -a -n
中国游戏中心 TCP 8000
联众世界 TCP 2000 2001 2002 3004
网易泡泡 UDP 4001
边锋网络游戏世界 TCP 4000
中国围棋网 TCP 9696
笨苹果游戏互动网 UDP 5000
上海热线游戏频道 TCP 8000
凯思帝国游戏在线 TCP 2050
浩方 TCP 1203
网上赢家 TCP 8001
证券之星 Tcp 8888
联众游戏的端口号是什么?
1007 暗棋
2000 游戏大厅
2002 聊天室
2005 麻将
3030 红心大战
3050 五子棋
3060 桥牌
3100 跳棋
3200 中国象棋
3300 国际象棋
3400 四国军棋
4000~4010 GICQ
3000 围棋
3001 俄罗斯方块
3002 三打一
3003 斗地主
3004 升级
3005 梭哈
3006 拱猪
3007 够级
3008 双扣
3010 跑得快
3012 飞行棋
3013 拼图
3015 台球
3016 原子
3017 510k
3018 憋7
3019 黑白棋
3020 锄大地
3021 炒地皮
3022 炸弹人
3023 敲三家
游戏端口范围
> 1 征服者1.0 40625 40629
> 2 征服者1.0c 40725 40727
> 3 罗马复兴 40825 40829
> 4 帝国时代 40525 40527
> 6 CS反恐精英1.5 27115 27130
> 7 CS反恐精英战队训练专区 27315 27318
> 8 CS反恐精英比赛专区 27415 27417
> 9 CS反恐精英服务器专区 27515 27530
> 10 CS反恐精英1.6 27215 27217
> 11 星际争霸 6111 6120
> 12 魔兽争霸3 6211 6220
> 13 冰封王座 6311 6318
> 14 红色警戒 3000 3004
> 15 共和国之辉 3200 3202
> 16 红警尤里复仇 3100 3102
> 17 三角洲部队1 17624 17626
> 18 三角洲部队3 37624 37626
> 19 FIFA2002 2048 2049
> 20 FIFA2003 2148 2149
> 21 英雄无敌3 3333 3334
> 22 突袭1.21 50626 50627
> 23 极品飞车2 2206 2207
> 24 极品飞车3 2306 2307
> 25 极品飞车5 2406 2407
> 26 暗黑破坏神I 7111 7112
> 27 暗黑破坏神II 7211 7212
> 28 流星蝴蝶剑 37105 37107
> 29 F16 26000 26001
> 30 F22 10022 10023
> 32 FIFA2004 2248 2250
> 31 CS反恐精英菜鸟天地 27015 27017
冲击波端口
Tcp: 135, 137, 139, 445
Msn端口:
Tcp 1863, 443
msn传文件: 端口为tcp 6891-6900等几个端口
BT的端口是tcp:6881~6890
电驴emule的端口tcp:4661-4669
迅雷的端口tcp:3077
poco的端口:udp:9000 udp:5356 tcp:5354
屏蔽以下地址(16个)后,pp 2005无法登陆。
58.17.4.10
60.24.125.13
60.145.116.233
60.176.133.73
60.179.0.49
60.211.7.149
60.222.48.244
61.47.144.27
61.167.193.65
61.145.118.218
202.121.50.51
218.75.110.195
220.175.8.84
220.175.8.100
221.203.230.25
222.33.116.192
*****
游戏
*****
3300/3550 i/o A3
3724 i/o 魔兽
6112 i/o 魔兽
6881 i/o 魔兽
6999 i/o 魔兽
7777 i/o Unreal:Klingon Honor Guard
7778 i/o Unreal:Tournament
22450 i/o Sin
26000 i/o Quake
26900 i/o HexenWorld
27005 i/o CS
27015 i/o CS
27500 i/o QuakeWorld
27910 i/o Quake 2
44405 UDP i/o 传奇(UDP监听端口)
55557 UDP i/o 传奇(UDP监听端口)
55901 i/o 传奇(游戏端口)
55960 i/o 传奇(数据交换端口)
55962 i/o 传奇(数据交换端口)
55970 i/o 传奇(监听端口)
禁用QQ、MSN、UC
利用添加IP规则,拦截以下IP的端口,实现禁止办公网络内禁止聊天。
以下是常用的聊天工具的服务器IP以及端口,
QQ 所使用的Port: TCP 8000---8001;443
UDP 8000--1429
QQ所用到的IP地址有:
218.17.209.23 ; 218.17.217.106; 218.18.95.135; 218.18.95.153 ;218.18.95.163
218.18.95.165; 218.18.95.219 ; 218.18.95.220; 218.18.95.221 ;218.18.95.227
218.18.95.181 ; 218.18.95.182 ;218.18.95.183 ;218.18.95.188 ;218.18.95.189
218.18.95.162 ; 218.17.217.106; 211.162.63.24; 219.133.38.9
61.144.238.15; 61.172.249.133; 61.172.249.134
MSN 所用到的地址有:(Port:TCP 1863)
207.46.106.2; 207.46.106.30; 207.46.110.100; 207.46.107.23; 207.46.106.12;
207.46.107.65; 207.46.78.94; 207.68.172.246; 207.46.104.20;
207.46.106.32; 207.46.108.20; 207.46.107.24; 207.46.107.86; 207.46.106.197;
207.46.106.42 ; 207.46.104.20 ;207.46.106.19 ;207.46.110.254
65.54.194.117 ; 64.4.33.7; 64.4.32.7; 65.54.183.195; 65.54.183.192;
65.54.194.118
203.89.193.30; 207.46.110.26 ; 207.46.110.24 ; 207.46.110.18
210.51.190.110;
UC UDP Port1 Port2
210.192.97.215 3001 3002
210.192.97.216 3001 3002
210.192.97.217 3001 3002
210.192.97.218 3001 3002
210.192.97.219 3001 3002
210.192.97.220 3001 3002
计算机常用端口一览表。
1 传输控制协议端口服务多路开关选择器
2 compressnet 管理实用程序
3 压缩进程
5 远程作业登录
7 回显(Echo)
9 丢弃
11 在线用户
13 时间
15 netstat
17 每日引用
18 消息发送协议
19 字符发生器
20 文件传输协议(默认数据口)
21 文件传输协议(控制)
22 SSH远程登录协议
23 telnet 终端仿真协议
24 预留给个人用邮件系统
25 smtp 简单邮件发送协议
27 NSW 用户系统现场工程师
29 MSG ICP
31 MSG验证
33 显示支持协议
35 预留给个人打印机服务
37 时间
38 路由访问协议
39 资源定位协议
41 图形
42 WINS 主机名服务
43 "绰号" who is服务
44 MPM(消息处理模块)标志协议
45 消息处理模块
46 消息处理模块(默认发送口)
47 NI ftp
48 数码音频后台服务
49 TACACS登录主机协议
50 远程邮件检查协议
51 IMP(接口信息处理机)逻辑地址维护
52 施乐网络服务系统时间协议
53 域名服务器
54 施乐网络服务系统票据交换
55 ISI图形语言
56 施乐网络服务系统验证
57 预留个人用终端访问
58 施乐网络服务系统邮件
59 预留个人文件服务
60 未定义
61 NI邮件?
62 异步通讯适配器服务
63 WHOIS+
64 通讯接口
65 TACACS数据库服务
66 Oracle SQL*NET
67 引导程序协议服务端
68 引导程序协议客户端
69 小型文件传输协议
70 信息检索协议
71 远程作业服务
72 远程作业服务
73 远程作业服务
74 远程作业服务
75 预留给个人拨出服务
76 分布式外部对象存储
77 预留给个人远程作业输入服务
78 修正TCP
79 Finger(查询远程主机在线用户等信息)
80 全球信息网超文本传输协议(www)
81 HOST2名称服务
82 传输实用程序
83 模块化智能终端ML设备
84 公用追踪设备
85 模块化智能终端ML设备
86 Micro Focus Cobol编程语言
87 预留给个人终端连接
88 Kerberros安全认证系统
89 SU/MIT终端仿真网关
90 DNSIX 安全属性标记图
91 MIT Dover假脱机
92 网络打印协议
93 设备控制协议
94 Tivoli对象调度
95 SUPDUP
96 DIXIE协议规范
97 快速远程虚拟文件协议
98 TAC(东京大学自动计算机)新闻协议
101 usually from sri-nic
102 iso-tsap
103 ISO Mail
104 x400-snd
105 csnet-ns
109 Post Office
110 Pop3 服务器(邮箱发送服务器)
111 portmap 或 sunrpc
113 身份查询
115 sftp
117 path 或 uucp-path
119 新闻服务器
121 BO jammerkillah
123 network time protocol (exp)
135 DCE endpoint resolutionnetbios-ns
137 NetBios-NS
138 NetBios-DGN
139 win98 共享资源端口(NetBios-SSN)
143 IMAP电子邮件
144 NeWS - news
153 sgmp - sgmp
158 PCMAIL
161 snmp - snmp
162 snmp-trap -snmp
170 network PostScript
175 vmnet
194 Irc
315 load
400 vmnet0
443 安全服务
456 Hackers Paradise
500 sytek
512 exec
513 login
514 shell - cmd
515 printer - spooler
517 talk
518 ntalk
520 efs
526 tempo - newdate
530 courier - rpc
531 conference - chat
532 netnews - readnews
533 netwall
540 uucp - uucpd 543 klogin
544 kshell
550 new-rwho - new-who
555 Stealth Spy(Phase)
556 remotefs - rfs_server
600 garcon
666 Attack FTP
750 kerberos - kdc
751 kerberos_master
754 krb_prop
888 erlogin
1001 Silencer 或 WebEx
1010 Doly trojan v1.35
1011 Doly Trojan
1024 NetSpy.698 (YAI)
1025 NetSpy.698
1033 Netspy
1042 Bla1.1
1047 GateCrasher
1080 Wingate
1109 kpop
1243 SubSeven
作者: 仅剩五元 2006-9-14 11:32 回复此发言
--------------------------------------------------------------------------------
2 计算机常用端口一览表。
1245 Vodoo
1269 Mavericks Matrix
1433 Microsoft SQL Server 数据库服务
1492 FTP99CMP (BackOriffice.FTP)
1509 Streaming Server
1524 ingreslock
1600 Shiv
1807 SpySender
1981 ShockRave
1999 Backdoor
2000 黑洞(木马) 默认端口
2001 黑洞(木马) 默认端口
2023 Pass Ripper
2053 knetd
2140 DeepThroat.10 或 Invasor
2283 Rat
2565 Striker
2583 Wincrash2
2801 Phineas
3129 MastersParadise.92
3150 Deep Throat 1.0
3210 SchoolBus
3389 Win2000 远程登陆端口
4000 OICQ Client
4567 FileNail
4950 IcqTrojan
5000 WindowsXP 默认启动的 UPNP 服务
5190 ICQ Query
5321 Firehotcker
5400 BackConstruction1.2 或 BladeRunner
5550 Xtcp
5555 rmt - rmtd
5556 mtb - mtbd
5569 RoboHack
5714 Wincrash3
5742 Wincrash
6400 The Thing
6669 Vampire
6670 Deep Throat
6711 SubSeven
6713 SubSeven
6767 NT Remote Control
6771 Deep Throat 3
6776 SubSeven
6883 DeltaSource
6939 Indoctrination
6969 Gatecrasher.a
7306 网络精灵(木马)
7307 ProcSpy
7308 X Spy
7626 冰河(木马) 默认端口
7789 ICQKiller
8000 OICQ Server
9400 InCommand
9401 InCommand
9402 InCommand
9535 man
9536 w
9537 mantst
9872 Portal of Doom
9875 Portal of Doom
9989 InIkiller
10000 bnews
10001 queue
10002 poker
10167 Portal Of Doom
10607 Coma
11000 Senna Spy Trojans
11223 ProgenicTrojan
12076 Gjamer 或 MSH.104b
12223 Hack?9 KeyLogger
12345 netbus木马 默认端口
12346 netbus木马 默认端口
12631 WhackJob.NB1.7
16969 Priotrity
17300 Kuang2
20000 Millenium II (GrilFriend)
20001 Millenium II (GrilFriend)
20034 NetBus Pro
20331 Bla
21554 GirlFriend 或 Schwindler 1.82
22222 Prosiak
23456 Evil FTP 或 UglyFtp 或 WhackJob
27374 SubSeven
29891 The Unexplained
30029 AOLTrojan
30100 NetSphere
30303 Socket23
30999 Kuang
31337 BackOriffice
31339 NetSpy
31666 BO Whackmole
31787 Hack a tack
33333 Prosiak
33911 Trojan Spirit 2001 a
34324 TN 或 Tiny Telnet Server
40412 TheSpy
40421 MastersParadise.96
40423 Master Paradise.97
47878 BirdSpy2
50766 Fore 或 Schwindler
53001 Remote Shutdown
54320 Back Orifice 2000
54321 SchoolBus 1.6
61466 Telecommando
65000 Devil
你的这个问题太多,这里回答不下,请在网络里面搜一下,很多的
❷ 在三菱Q系列PLC中有哪些助记符各是什么意思
表格:
MOV A,direct 直接地址传送到累加器 2 1。
MOV A,@Ri 累加器传送到外部RAM(8 地址) 1 1。
MOV A,#data 立即数传送到累加器 2 1。
MOV Rn,A 累加器传送到寄存器 1 1。
MOV Rn,direct 直接地址传送到寄存器 2 2。
MOV Rn,#data 累加器传送到直接地址 2 1。
MOV direct,Rn 寄存器传送到直接地址 2 1。
MOV direct,direct 直接地址传送到直接地址 3 2。
MOV direct,A 累加器传送到直接地址 2 1。
MOV direct,@Ri 间接RAM 传送到直接地址 2 2。
MOV direct,#data 立即数传送到直接地址 3 2。
MOV @Ri,A 直接地址传送到直接地址 1 2。
MOV @Ri,direct 直接地址传送到间接RAM 2 1。
MOV @Ri,#data 立即数传送到间接RAM 2 2。
MOV DPTR,#data16 16 位常数加载到数据指针 3 1。
MOVC A,@A+DPTR 代码字节传送到累加器 1 2。
MOVC A,@A+PC 代码字节传送到累加器 1 2。
MOVX A,@Ri 外部RAM(8 地址)传送到累加器 1 2。
MOVX A,@DPTR 外部RAM(16 地址)传送到累加器 1 2。
MOVX @Ri,A 累加器传送到外部RAM(8 地址) 1 2。
MOVX @DPTR,A 累加器传送到外部RAM(16 地址) 1 2。
PUSH direct 直接地址压入堆栈 2 2。
POP direct 直接地址弹出堆栈 2 2。
XCH A,Rn 寄存器和累加器交换 1 1。
XCH A,direct 直接地址和累加器交换 2 1。
XCH A,@Ri 间接RAM 和累加器交换 1 1。
XCHD A,@Ri 间接RAM 和累加器交换低4 位字节 1 1。
INC A 累加器加1 1 1。
INC Rn 寄存器加1 1 1。
INC direct 直接地址加1 2 1。
INC @Ri 间接RAM 加1 1 1。
INC DPTR 数据指针加1 1 2。
DEC A 累加器减1 1 1。
DEC Rn 寄存器减1 1 1。
DEC direct 直接地址减1 2 2。
DEC @Ri 间接RAM 减1 1 1。
(2)sinsftp扩展阅读:
PLC的编程一般可以使用两种语言,一种就是梯形图,一种就是助记符,编写梯形图的时候,通常都是从菜单中把指令代码一个个拉出来的,放在界面上,而用助记符编的时候,就是靠手动输入。大部分开发平台,都支持直接将梯形图转换成助记符的功能。
MOV bit, C 进位位位传送到直接寻址 2 2。JC rel 如果进位位为1 则转移 2 2。
JNC rel 如果进位位为0 则转移 2 2。JB bit,rel 如果直接寻址位为1 则转移 3 2。JNB bit,rel 如果直接寻址位为0 则转移 3 2。JBC bit,rel 直接寻址位为1 则转移并清除该位 2 2。
❸ 谁有辩论赛计时器的源代码
客户端
/* Client side of an ftp service. Actions:
- connect to server and request service
- send size-of-sile info to server
- start receiving file from server
- close connection
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <time.h>
#include <errno.h>
#define SERVER_PORT_ID 6081
#define CLIENT_PORT_ID 6086
#define SERVER_HOST_ADDR "128.119.40.186"
/* gaia.cs.umass.e */
#define MAXSIZE 512
#define ACK 2
#define NACK 3
#define REQUESTFILE 100
#define COMMANDNOTSUPPORTED 150
#define COMMANDSUPPORTED 160
#define BADFILENAME 200
#define FILENAMEOK 400
#define STARTTRANSFER 500
int readn(int sd,char *ptr,int size);
int writen(int sd,char *ptr,int size);
main(int argc,char *argv[])
{
int sockid, newsockid,i,getfile,ack,msg,msg_2,c,len;
int no_writen,start_xfer, num_blks,num_last_blk;
struct sockaddr_in my_addr, server_addr;
FILE *fp;
char in_buf[MAXSIZE];
if(argc != 2) {printf("error: usage : sftp filename\n"); exit(0);}
no_writen = 0;
num_blks = 0;
num_last_blk = 0;
len = strlen(argv[1]);
printf("client: creating socket\n");
if ((sockid = socket(AF_INET,SOCK_STREAM,0)) < 0)
{ printf("client: socket error : %d\n", errno); exit(0);
}
printf("client: binding my local socket\n");
bzero((char *) &my_addr,sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
my_addr.sin_port = htons(CLIENT_PORT_ID);
if (bind(sockid ,(struct sockaddr *) &my_addr,sizeof(my_addr)) < 0)
{printf("client: bind error :%d\n", errno); exit(0);
}
printf("client: starting connect\n");
bzero((char *) &server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr(SERVER_HOST_ADDR);
server_addr.sin_port = htons(SERVER_PORT_ID);
if (connect(sockid ,(struct sockaddr *) &server_addr,
sizeof(server_addr)) < 0)
{printf("client: connect error :%d\n", errno); exit(0);
}
/* Once we are here, we've got a connection to the server */
/* tell server that we want to get a file */
getfile = htons(REQUESTFILE);
printf("client: sending command request to ftp server\n");
if((writen(sockid,(char *)&getfile,sizeof(getfile))) < 0)
{printf("client: write error :%d\n", errno); exit(0);}
/* want for go-ahead from server */
msg = 0;
if((readn(sockid,(char *)&msg,sizeof(msg)))< 0)
{printf("client: read error :%d\n", errno); exit(0); }
msg = ntohs(msg);
if (msg==COMMANDNOTSUPPORTED) {
printf("client: server refused command. goodbye\n");
exit(0);
}
else
printf("client: server replied %d, command supported\n",msg);
/* send file name to server */
printf("client: sending filename\n");
if ((writen(sockid,argv[1],len))< 0)
{printf("client: write error :%d\n", errno); exit(0);}
/* see if server replied that file name is OK */
msg_2 = 0;
if ((readn(sockid,(char *)&msg_2,sizeof(msg_2)))< 0)
{printf("client: read error :%d\n", errno); exit(0); }
msg_2 = ntohs(msg_2);
if (msg_2 == BADFILENAME) {
printf("client: server reported bad file name. goodbye.\n");
exit(0);
}
else
printf("client: server replied %d, filename OK\n",msg_2);
/* CLIENT KNOWS SERVER HAS BEEN ABLE TO OPEN THE FILE IN READ
MODE AND IS ASKING FOR GO-AHEAD*/
/* CLIENT NOW OPENS A COPY OF THE FILE IN WRITE MODE AND SENDS
THE GOAHEAD TO SERVER*/
printf("client: sending start transfer command\n");
start_xfer = STARTTRANSFER;
start_xfer = htons(start_xfer);
if ((writen(sockid,(char *)&start_xfer,sizeof(start_xfer)))< 0)
{printf("client: write error :%d\n", errno); exit(0);
}
if ((fp = fopen(argv[1],"w")) == NULL)
{printf(" client: local open file error \n");exit(0);}
/*NOW THE CLIENT IS READING INFORMATION FROM THE SERVER REGARDING HOW MANY
FULL BLOCKS OF SIZE MAXSIZE IT CAN EXPECT. IT ALSO RECEIVES THE NUMBER
OF BYTES REMAINING IN THE LAST PARTIALLY FILLED BLOCK, IF ANY */
if((readn(sockid,(char *)&num_blks,sizeof(num_blks))) < 0)
{printf("client: read error on nblocks :%d\n",errno);exit(0);}
num_blks = ntohs(num_blks);
printf("client: server responded: %d blocks in file\n",num_blks);
ack = ACK;
ack = htons(ack);
if((writen(sockid,(char *)&ack,sizeof(ack))) < 0)
{printf("client: ack write error :%d\n",errno);exit(0);
}
if((readn(sockid,(char *)&num_last_blk,sizeof(num_last_blk))) < 0)
{printf("client: read error :%d on nbytes\n",errno);exit(0);}
num_last_blk = ntohs(num_last_blk);
printf("client: server responded: %d bytes last blk\n",num_last_blk);
if((writen(sockid,(char *)&ack,sizeof(ack))) < 0)
{printf("client: ack write error :%d\n",errno);exit(0);
}
/* BEGIN READING BLOCKS BEING SENT BY SERVER */
printf("client: starting to get file contents\n");
for(i= 0; i < num_blks; i ++) {
if((readn(sockid,in_buf,MAXSIZE)) < 0)
{printf("client: block error read: %d\n",errno);exit(0);}
no_writen = fwrite(in_buf,sizeof(char),MAXSIZE,fp);
if (no_writen == 0) {printf("client: file write error\n");exit(0);}
if (no_writen != MAXSIZE)
{printf("client: file write error : no_writen is less\n");exit(0);}
/* send an ACK for this block */
if((writen(sockid,(char *)&ack,sizeof(ack))) < 0)
{printf("client: ack write error :%d\n",errno);exit(0);}
printf(" %d...",i);
}
/*IF THERE IS A LAST PARTIALLY FILLED BLOCK, READ IT */
if (num_last_blk > 0) {
printf("%d\n",num_blks);
if((readn(sockid,in_buf,num_last_blk)) < 0)
{printf("client: last block error read :%d\n",errno);exit(0);}
no_writen = fwrite(in_buf,sizeof(char),num_last_blk,fp);
if (no_writen == 0)
{printf("client: last block file write err :%d\n",errno);exit(0);}
if (no_writen != num_last_blk)
{printf("client: file write error : no_writen is less 2\n");exit(0);}
if((writen(sockid,(char *)&ack,sizeof(ack))) < 0)
{printf("client :ack write error :%d\n",errno);exit(0);}
}
else printf("\n");
/*FILE TRANSFER ENDS. CLIENT TERMINATES AFTER CLOSING ALL ITS FILES
AND SOCKETS*/
fclose(fp);
printf("client: FILE TRANSFER COMPLETE\n");
close(sockid);
}
/* DUE TO THE FACT THAT BUFFER LIMITS IN KERNEL FOR THE SOCKET MAY BE
REACHED, IT IS POSSIBLE THAT READ AND WRITE MAY RETURN A POSITIVE VALUE
LESS THAN THE NUMBER REQUESTED. HENCE WE CALL THE TWO PROCEDURES
BELOW TO TAKE CARE OF SUCH EXIGENCIES */
int readn(int sd,char *ptr,int size)
{ int no_left,no_read;
no_left = size;
while (no_left > 0)
{ no_read = read(sd,ptr,no_left);
if(no_read <0) return(no_read);
if (no_read == 0) break;
no_left -= no_read;
ptr += no_read;
}
return(size - no_left);
}
int writen(int sd,char *ptr,int size)
{ int no_left,no_written;
no_left = size;
while (no_left > 0)
{ no_written = write(sd,ptr,no_left);
if(no_written <=0) return(no_written);
no_left -= no_written;
ptr += no_written;
}
return(size - no_left);
}
服务端
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <time.h>
#include <errno.h>
#define MY_PORT_ID 6081
#define MAXLINE 256
#define MAXSIZE 512
#define ACK 2
#define NACK 3
#define REQUESTFILE 100
#define COMMANDNOTSUPPORTED 150
#define COMMANDSUPPORTED 160
#define BADFILENAME 200
#define FILENAMEOK 400
int writen(int sd,char *ptr,int size);
int readn(int sd,char *ptr,int size);
main() {
int sockid, newsd, pid, clilen;
struct sockaddr_in my_addr, client_addr;
printf("server: creating socket\n");
if ((sockid = socket(AF_INET,SOCK_STREAM,0)) < 0)
{printf("server: socket error : %d\n", errno); exit(0); }
printf("server: binding my local socket\n");
bzero((char *) &my_addr,sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(MY_PORT_ID);
my_addr.sin_addr.s_addr = htons(INADDR_ANY);
if (bind(sockid ,(struct sockaddr *) &my_addr,sizeof(my_addr)) < 0)
{printf("server: bind error :%d\n", errno); exit(0); }
printf("server: starting listen \n");
if (listen(sockid,5) < 0)
{ printf("server: listen error :%d\n",errno);exit(0);}
while(1==1) {
/* ACCEPT A CONNECTION AND THEN CREATE A CHILD TO DO THE WORK */
/* LOOP BACK AND WAIT FOR ANOTHER CONNECTION */
printf("server: starting accept\n");
if ((newsd = accept(sockid ,(struct sockaddr *) &client_addr,
&clilen)) < 0)
{printf("server: accept error :%d\n", errno); exit(0); }
printf("server: return from accept, socket for this ftp: %d\n",
newsd);
if ( (pid=fork()) == 0) {
/* CHILD PROC STARTS HERE. IT WILL DO ACTUAL FILE TRANSFER */
close(sockid); /* child shouldn't do an accept */
doftp(newsd);
close (newsd);
exit(0); /* child all done with work */
}
/* PARENT CONTINUES BELOW HERE */
close(newsd); /* parent all done with client, only child */
} /* will communicate with that client from now on */
}