PIXNET Logo登入

經驗交流分享與備忘

跳到主文

感情最痛恨 劈腿. 背叛 與 欺騙

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 3月 24 週一 201417:23
  • [轉] Scocket Programming with DEV-C++


在 DEV-C++ 中要使用 Windows Socket Programming 必須要連結 Winsock 函式庫。連結函示庫的方法說明如下:
 
Step 1. 開啟工具列中的「專案」> 「專案選項」

Step 2. 在「專案選項」視窗中選擇「參數」頁面
Step 3. 按下「參數」頁面中的「新增函式庫或 Obj 檔」
Step 4. 選擇 [DEV-C++安裝目錄]\lib\libwsock32.a並按下「開啟」
Step 5. 如果在「連結器」文字框中會出現 ..\lib\libwsock32.a,則按下「確定」
 
完成以上步驟後就可以開始撰寫 Windows Socket 程式。
 



簡單的 server 程式





#include<winsock2.h>
#include<stdio.h>

int main() {
  SOCKET server_sockfd, client_sockfd;
  int server_len, client_len;
  struct sockaddr_in server_address;
  struct sockaddr_in client_address;

 

  // 註冊 Winsock DLL

  WSADATA wsadata;
  if(WSAStartup(0x101,(LPWSADATA)&wsadata) != 0) {
    printf("Winsock Error\n");

    exit(1);                                         
  }

 

  // 產生 server socket

  server_sockfd = socket(AF_INET, SOCK_STREAM, 0); // AF_INET(使用IPv4); SOCK_STREAM; 0(使用預設通訊協定,即TCP)
  if(server_sockfd == SOCKET_ERROR) {
    printf("Socket Error\n");

    exit(1);
  }

 

  // struct sockaddr_in {

  //     short int               sin_family; /* AF_INT(使用IPv4) */

  //     unsigned short int sin_port;    /* Port(埠號) */

  //     struct in_addr       sin_addr;   /* IP位址 */

  // };

  // sturct in_addr {

  //     unsigned long int s_addr;

  // };
  server_address.sin_family = AF_INET; // AF_INT(使用IPv4)
  server_address.sin_addr.s_addr = inet_addr("127.0.0.1"); // 設定IP位址
  server_address.sin_port = 9734; //設定埠號
  server_len = sizeof(server_address);
 
  if(bind(server_sockfd, (struct sockaddr *)&server_address, server_len) < 0) {
    printf("Bind Error\n");
    exit(1);
  }


  if(listen(server_sockfd, 5) < 0) {
    printf("Listen Error\n");
    exit(1);
  }

 

  while(1) {
    char ch;
    printf("Server waiting...\n");
    client_len = sizeof(client_address);


    client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len);
    if(client_sockfd == SOCKET_ERROR) {
      printf("Accept Error\n");
      exit(1);
    }


    recv(client_sockfd, &ch, 1, 0); // Linux socket programming 為 read
    ch++;
    send(client_sockfd, &ch, 1, 0); // Linux socket programming 為 write
    closesocket(client_sockfd); // Linux socket programming 為 close
  }
}






 



簡單的 client 程式





#include<winsock2.h>
#include<stdio.h>

int main() {
  SOCKET sockfd;
  int len;
  struct sockaddr_in address;
  int result;
  char ch = 'A';

 

  WSADATA wsadata;
  if(WSAStartup(0x101,(LPWSADATA)&wsadata) != 0) {
    printf("Winsock Error\n"); 

    exit(1);
  }

  sockfd = socket(AF_INET, SOCK_STREAM, 0);
  address.sin_family = AF_INET;
  address.sin_addr.s_addr = inet_addr("127.0.0.1");
  address.sin_port = 9734;
  len = sizeof(address);

 

  result = connect(sockfd, (struct sockaddr *)&address, len);  
  if(result == -1) {
    printf("Connetc Error");
    exit(1);
  }

 

  send(sockfd, &ch, 1, 0);
  recv(sockfd, &ch, 1, 0);
  printf("char from server = %c\n", ch);
  closesocket(sockfd);
  exit(0);
}







(繼續閱讀...)
文章標籤

本熊 發表在 痞客邦 留言(0) 人氣(767)

  • 個人分類:C程式設計
▲top
  • 2月 20 週三 201314:37
  • [轉貼] source insight 解决自动缩进 和 TAB键=4个SPACE

1. SMART TAB的用法. 解决自动缩进.

    新开一个PROJECT后,点Options->Document Options,弹出对话框后先在左上角选好要用的Document Type,主要就是设C Source File和C++ Source File,选好后点右边中间的Auto Indent调整缩进。单选里一定要点Smart,右边有两个复选框Indent Open Brace和Indent Close Brace,具体效果是如何的可以看SIS的HELP。
    勾选Auto Indent和SMART的效果: 在C程序里, 如果遇到行末没有分号的语句,如IF, WHILE, SWITCH等, 写到该行末按回车,则新行自动相对上一行缩进四列.
    勾掉indent Open Brace和Indent Close Brace的效果: 继上一段,在相对缩进行里, 如果输入"{"或"}", 则自动和上一行列对齐。
2.TAB键=4个SPACE
    写代码时候很头痛的问题是在SIS界面里,即使设置好了Tab Width=4,按四个空格所显示的缩进,和按TAB键的缩进位置是不同的,后者要更靠里面三个字符的位置,但在左下角看到的Col=5都是一样的。这样 的代码在SIS里看了不对齐,到PB里看了却是对齐的。而SIS里面看着对其的代码,在PB里面会差三格。现在发现Options-> Document Options里面的右下角Editing Options栏里,把Expand tabs勾起来,然后确定。OK,现在TAB键的缩进和四个空格的缩进在SIS里面看起来就对齐咯!
(繼續閱讀...)
文章標籤

本熊 發表在 痞客邦 留言(0) 人氣(1,205)

  • 個人分類:C程式設計
▲top
1

參觀人氣

  • 本日人氣:
  • 累積人氣:

文章分類

toggle 作業系統相關 (9)
  • FreeBSD (8)
  • IPv6 Logo (2)
  • Visual C# (1)
  • Visual C# (1)
  • Mac使用心得 (5)
  • Synology NAS應用 (0)
  • 系統應用 (49)
  • 防毒防駭 (5)
  • 系統安裝 (30)
toggle 投資理財 (2)
  • 科技產業 (8)
  • 投資學習 (9)
toggle 網頁設計相關 (6)
  • Flex程式設計 (5)
  • MySQL資料庫 (13)
  • ASP.NET程式設計 (1)
  • CSS樣式表應用 (5)
  • Flex (1)
  • PHP程式設計 (51)
  • Perl 程式設計 (1)
  • Windows系統應用 (2)
  • 好書推件 (1)
  • Android程式設計 (10)
  • C程式設計 (2)
  • Linux相關應用 (18)
  • Java程式設計 (6)
  • JAVAt程式設計-GWT (7)
  • Eucalyptus XEN (2)
  • 喻道故事 (1)
  • 下載資源 (2)
  • 終生學習 (7)
  • Goolge 新玩意 (1)
  • 英文學習心得 (3)
  • 工商服務 (12)
  • 勵志成長 (18)
  • 新聞時事 (17)
  • 讀者服務 (3)
  • JavaScript (22)
  • 省錢大作戰 (15)
  • 搶錢大作戰 (2)
  • 趣味分享 (50)
  • 感情生活 (15)
  • 用DSLR寫日記 (20)
  • 程式設計 (7)
  • 職場人生 (16)
  • 健康生活 (63)
  • 未分類文章 (1)