您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10204|回复: 1
打印 上一主题 下一主题

[C] C语言学习之Linux下TCP服务器与客户端的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:- T) T, ^; _( S$ h2 j; s
  1. #include
    ) {' R: c1 i' u7 A
  2. #include0 L6 O7 j- b9 F3 v9 o% g
  3. #include
    5 g" L- K* k8 G- r' U
  4. #include
    9 J. F, w7 j7 o1 i* I5 {5 I
  5. #include2 D+ p( e2 a7 v- q8 c
  6. #include! K) H* e# {+ S' _% A
  7. #include
    3 w$ y( Z) q8 d' A6 Q7 X
  8. #include
复制代码

0 b! ~/ [# E' X; A: k4 a: s0 Q+ U: C/ B: D/ `
服务器代码如下:4 I% J% r# w3 p6 |: a
  1. #include/ N2 o2 o# t0 d
  2. #include1 I; T+ D" d1 ?. Q2 h
  3. #include
    . K2 Z, ?9 a4 \4 `
  4. #include
    $ k$ N, M: Z* M4 O
  5. #include
    & C- |1 K& E6 {$ I
  6. #include
    / _/ z" X2 ^: z) a" \
  7. #include
    ) u5 i8 ]  ?4 x. d: O  |8 x
  8. #include
复制代码

4 \& R- Y( W, I" A: e0 v' }# ?
3 Y+ }$ S9 w3 h5 F% v0 ~
3 }  O1 P% c0 W9 q3 Y# z, G& g
2 X8 G( g; Z1 O5 I& x, j
+ g9 _: [+ x) \* o

0 l& j3 O: V" x4 G+ c- \7 l$ I; Z
8 f5 [* U0 {! K5 |$ j: t! j* d
& O$ Z: M/ ]2 h3 b( G- U
( a( ~0 @7 ~! N9 |& x
& m7 M6 R5 E$ _' j! n

0 C( J6 F! S9 i) R* g) e
# P; n: w5 k+ L/ s* k* W# A- ?

- S/ @0 u, h: N3 m4 G

+ c& i* s' o9 Q2 n. T* W9 @% \6 s$ {' J' j( e& B6 q( l2 ^  X

* W$ t' C: ]6 g2 @
7 {' w3 x. J. K2 r# R& O

8 G/ H! x/ ?* p, R
0 Y; G& d8 e/ J8 l
2 Q0 ?$ W- O& I9 R; A% o2 I4 u; F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:6 ?' V/ M$ [, q( E; Y& Z2 @
#include <sys/types.h> , C$ [) d$ m7 K" Y7 K" S1 p
#include <sys/socket.h> 
/ B: l. b: y3 y# T#include <unistd.h> 
6 q6 t) d7 N& N#include <netinet/in.h> 8 A4 y: v% s; P! e! ?
#include <arpa/inet.h> 
1 S/ E  ?- f) q/ w#include <string.h> 
& _: W. A9 G" a6 l#include <stdio.h>  ; ^: u& K# U3 J4 v. {, w+ k. y
int main() {
3 R' N; h1 p9 [        int sockClient;
( M( n5 C9 n& g) T: k' h( C( i        struct sockaddr_in addrSrv;1 @  F  G& Q( X9 g# _3 i5 V# @' T
        sockClient = socket(AF_INET,SOCK_DGRAM,0);0 c( N1 z3 @1 O+ b9 O
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");6 u" @* a# |% `* J/ r/ u' w
        addrSrv.sin_family=AF_INET;
4 }) M  S! |! R7 c        addrSrv.sin_port=htons(6000);
# t+ K8 m3 ?) U8 ^. y/ I        while(1)
% d& Z# `' \) Z% i* ~        {
* n! w, q# ~( }) q4 F                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));6 j0 ~  |9 t( v% s
                sleep(2);. a$ l+ ?6 X! R9 z
        }    9 L; _5 ^- w- v
        close(sockClient);  
  {! w  |$ x1 l/ ^        return 0; 
) m9 x% Q, g8 T' D, ]}, ?3 C  p  h: M8 V- S0 f" s+ p: k
" g+ C1 _) m- c/ _) R
" d* c) t+ T$ j$ B  V. I
客户端:
  1. #include <stdio.h> 5 o8 Z  k& _& B) ^8 k; y
  2. #include <sys/types.h> 
    - r; y- v) Q# [$ u9 W6 I
  3. #include <sys/socket.h> 
    2 F, Y$ u1 Y' {3 k2 L) K5 n8 P. }# D
  4. #include <netinet/in.h> % L2 E$ G5 u8 w+ J- R
  5. #include <arpa/inet.h> 
    . f% q  r. Y; o% g7 b
  6. #include <string.h> ) ^" v' L1 ?5 U1 q* |; `  M  `
  7. #include <unistd.h> 5 y) b  }9 i3 L- ^7 v
  8. #include <fcntl.h> 
    0 \8 `4 Y3 c/ J. K1 u$ U0 U4 o, `
  9. #include <sys/time.h> ! ~  u2 v0 s7 K. j+ }* ^; G
  10. #include <sys/select.h> ) P1 a/ U) C- b- q' G, `* ^
  11. #include <sys/ioctl.h>  
    - x4 t9 q& R. T- q- B
  12. int main() {
    * q# W1 o" ~, J; q! z
  13.         int sockSrv;
    5 L9 p' ]! `& P0 F# D. l
  14.         struct sockaddr_in addrSrv;
    3 n4 Z7 [  }  J) V% r
  15.         int len;. L& a, L- D$ H- x* l8 p
  16.         char recvBuf[100];, N% @! i0 Q$ G0 C: L$ i7 D8 d
  17.         scanf("%s",recvBuf);
    4 r' ?2 ?5 ]* Z( V3 o! |1 y
  18.         struct sockaddr_in addrClient;  N2 M) N' j2 l( p/ ^
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);# {- ~5 `4 c$ d! F+ Z. K$ @* H
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    " g. W8 u% Y0 E
  21.         addrSrv.sin_family = AF_INET;
    3 s3 |: N2 |4 J% ~3 s% v# f# _
  22.         addrSrv.sin_port = htons(6000);
    " q% p) Q1 I8 ^0 W# Y
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));* \0 y# U% I: X# B
  24.         len = sizeof(struct sockaddr);0 o3 ~" G5 Q0 J/ Y
  25.         memset(recvBuf, 0, 100);
    / H' u- d6 _8 |+ v
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);* f  ?. i7 g6 i8 u2 S
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    - v) G2 u( C! B
  28.         printf("Client data is:%s\n",recvBuf);* c: C$ Q. J4 O' w( l* b, Y, E
  29.         close(sockSrv);1 {' f+ P6 t0 H+ v- n0 Q
  30.         return 0;2 E) H1 b# H# E' s9 ?  i! r
  31. } 
复制代码
( y* \9 S! O# H$ K: a1 T+ j+ `

' O7 f( K. v" y# l1 J4 ~- s% ?; w) J8 b( B

' O% d1 b; J6 U
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 14:38 , Processed in 0.134606 second(s), 18 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!