vs2010編寫的簡單socket聊天
伺服器端
// server.cpp : 定義控制檯應用程式的入口點。
//mfc用來了解win的作業系統的核心
#include "stdafx.h"
#include<WinSock2.h>//引入標頭檔案
#pragma comment(lib,"ws2_32.lib") //載入動態庫
int _tmain(int argc, _TCHAR* argv[])
{
//1,請求協議版本
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);//請求2.2版本的通訊協議
if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){//判斷請求版本是否成功
printf("請求版本失敗\n");
return -1;
}
printf("請求版本成功!\n");
//2,建立套接字,手機把聲音變成電訊號,socket也是一個作用
SOCKET serverSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(serverSocket == INVALID_SOCKET){
printf("建立socket失敗\n");
return -1;
}
printf("建立socket成功!\n");
//3,建立協議地址族
SOCKADDR_IN addr={0};
addr.sin_family = AF_INET; //1,協議
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//2,主機
addr.sin_port = htons(10087); //3,網路埠 應用
//4,繫結
int r=bind(serverSocket,(sockaddr*)&addr,sizeof addr);
if(r==-1){
printf("bind失敗!\n");
return -1;
}
printf("bind成功!\n");
//5,監聽(為了安全,通話可能會被錄音)
//tcp是安全的,所以要監聽,指定最大監聽數量,同樣也判斷一下,是否在這一步是否會失敗 ,
// 怎麼監聽,監聽這個埠就可以了,同時給他一個數字,指定最大監聽數量
r=listen(serverSocket,10);
if(r==-1){
printf("listen失敗!\n");
return -1;
}
printf("listen成功!");
//6,等待客戶端連線
SOCKADDR_IN cAddr = { 0 };
int len = sizeof cAddr;
SOCKET clientSocket = accept(serverSocket,(sockaddr*)&cAddr,&len);
//如果這個埠是個錯誤的埠, SOCKET_ERROR也就是-1,-1代表常規的錯誤
if(clientSocket == SOCKET_ERROR)
{
printf("錯誤的客戶端!\n");
closesocket(serverSocket);
WSACleanup();
return -1;
}
printf("有客戶端連線進來了:%s\n",inet_ntoa(cAddr.sin_addr));
//從caddr裡面拿IP地址,從整數轉成字串,要不然是看不懂的
//通訊
char buff[255];
while(1){//每一次接收前,把內容清空
memset(buff,0,256);
r = recv(clientSocket,buff,255,NULL);
if(r>0){
printf(">>%s\n",buff);
}
}
while(1);
return 0;
}
客戶端
// client.cpp : 定義控制檯應用程式的入口點。
#include "stdafx.h"
#include<WinSock2.h>//引入標頭檔案
#pragma comment(lib,"ws2_32.lib") //載入動態庫
int _tmain(int argc, _TCHAR* argv[])
{
//1,請求協議版本
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);//請求2.2版本的通訊協議
if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){//判斷請求版本是否成功
printf("請求版本失敗\n");
return -1;
}
printf("請求版本成功!\n");
//2,建立套接字,手機把聲音變成電訊號,socket也是一個作用
SOCKET serverSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(serverSocket == INVALID_SOCKET){
printf("建立socket失敗\n");
return -1;
}
printf("建立socket成功!\n");
//3,獲取協議地址族
SOCKADDR_IN addr={0};
addr.sin_family = AF_INET; //1,協議
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//2,主機
addr.sin_port = htons(10087); //3,網路埠 應用
//4,連線伺服器
int r = connect(serverSocket,(sockaddr*)&addr,sizeof addr);
if(r==-1)
{
printf("伺服器不理我\n");
return -1;
}
printf("連線伺服器成功");
//通訊
char buff[255];
while(1){
memset(buff,0,256);
printf("你要發什麼\n");
scanf("%s",buff);
r = send(serverSocket,buff,strlen(buff),NULL);
if(r>0){
printf("傳送%d位元組到伺服器成功\n",r);
}
}
while(1);
return 0;
}
相關文章
- Python使用Socket寫一個簡單聊天程式Python
- WinForm的Socket實現簡單的聊天室 IMORM
- 簡單寫個聊天室
- C# 簡單的聊天大廳功能及原始碼(socket通訊)C#原始碼
- UNIX Domain Socket實現簡易聊天AI
- PHP 編寫基本的 Socket 程式PHP
- 一個簡單的BypassUAC編寫
- PHP socket 的簡單理解PHP
- 簡單的Socket通訊
- 編寫socket套接字的步驟
- 編寫簡單的Java程式碼:HelloWoridJava
- [譯]用Golang編寫一個簡易聊天室Golang
- socket 完成簡單的通訊
- 編寫一個簡單的JavaScript模板引擎JavaScript
- 編寫一個簡單的智慧合約
- 編寫一個簡單的babel外掛Babel
- python3:利用socket建立的一個簡單的聊天client端和server端例項PythonclientServer
- 【shell 練習5】編寫簡單的多級選單
- Python基於Socket實現簡易多人聊天室Python
- Java的Socket通訊簡單例項Java單例
- php實現一個簡單的socketPHP
- substrate輕鬆學系列6:編寫簡單的pallet
- 教你如何編寫第一個簡單的爬蟲爬蟲
- 利用 Powershell 編寫簡單的瀏覽器指令碼瀏覽器指令碼
- 用Java編寫一個最簡單的桌面程式Java
- Python編寫一個簡單計算器Python
- TCP、UDP、HTTP及Socket的簡單講解TCPUDPHTTP
- 這兩天看phpsocket.io,寫了個簡單的web線上聊天PHPWeb
- socket實現聊天功能(二)
- react+react-router+redux+Node.js+socket.io寫一個聊天webappReactReduxNode.jsWebAPP
- 使用 Raku 編寫簡單的文字識別模擬程式
- 使用 Vala 編寫一個簡單的文字識別程式
- vue..js 編寫的簡單音樂播放器VueJS播放器
- Python編寫簡單的學生資訊管理系統Python
- 用 Go 編寫一個簡單的 WebSocket 推送服務GoWeb
- Netty版本 簡單聊天室Netty
- socket實現簡單ssh服務
- 用jQuery編寫簡單九宮格抽獎jQuery