基于socket簡易聊天程序畢業(yè)設計(論文)_第1頁
基于socket簡易聊天程序畢業(yè)設計(論文)_第2頁
基于socket簡易聊天程序畢業(yè)設計(論文)_第3頁
基于socket簡易聊天程序畢業(yè)設計(論文)_第4頁
基于socket簡易聊天程序畢業(yè)設計(論文)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

基于socket簡易聊天程序畢業(yè)設計(論文)簡單的socket程序基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第1頁?;趕ocket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第1頁。雖然很簡單,但還是調(diào)試了很長時間。本科時候接觸過socket——那個帥帥的劉老師的課,現(xiàn)在重新再撿起來。程序中專門建立一個FunThread線程用來接收數(shù)據(jù),實現(xiàn)雙向通信,也可以連續(xù)發(fā)送、連續(xù)接收。代碼貼上來,如果還能保留VAView那樣的顏色區(qū)別就好看了,但是試了好幾遍都不行server:#include<WINSOCK2.H>

#include<stdio.h>#definePORT

6000//服務器端口

#defineMSGSIZE

1024//收發(fā)緩沖區(qū)的大小#pragmacomment(lib,"ws2_32.lib")//鏈接靜態(tài)庫DWORDWINAPIFunThread(LPVOID);//創(chuàng)建一個線程,專門用來接收數(shù)據(jù)SOCKET

sClient;//連接所用套節(jié)字

SOCKET

sListen;//監(jiān)聽套接字

SOCKADDR_INclient;//保存客戶的地址信息

int

iaddrSize=sizeof(SOCKADDR_IN);intmain()

{

WSADATA

wsaData;

SOCKADDR_INlocal;

char

s_Message[MSGSIZE];//收發(fā)緩沖區(qū)WSAStartup(0x0202,&wsaData);//InitializeWindowssocketlibrary

sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//創(chuàng)建服務器監(jiān)聽套節(jié)字。TCP協(xié)議

local.sin_family=AF_INET;//AF_INET指明使用TCP/IP協(xié)議族

local.sin_port=htons(PORT);//指明連接服務器的端口號

local.sin_addr.s_addr=htonl(INADDR_ANY);//自動獲取本機地址

bind(sListen,(structsockaddr*)&local,sizeof(SOCKADDR_IN));//地址綁定到套接字

listen(sListen,1);//開始監(jiān)聽

sClient=accept(sListen,(structsockaddr*)&client,&iaddrSize);//建立連接

printf("Accepteclient:%s:%d\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port));HANDLEhThread=CreateThread(NULL,0,FunThread,0,0,0);//創(chuàng)建接收線程

CloseHandle(hThread);while(TRUE)

{

printf("ServerSend:");

//從鍵盤輸入

gets(s_Message);

//發(fā)送數(shù)據(jù)

send(sClient,s_Message,strlen(s_Message),0);

}

return0;

}DWORDWINAPIFunThread(LPVOID)

{

charc_Message[MSGSIZE];//收發(fā)緩沖區(qū)

intret;//接收字節(jié)的個數(shù)

while(TRUE)

{

ret=recv(sClient,c_Message,MSGSIZE,0);//接收數(shù)據(jù)

if(ret==SOCKET_ERROR)

{

printf("\nclientisclosed!");

sClient=accept(sListen,(structsockaddr*)&client,&iaddrSize);//重新開始監(jiān)聽

printf("\nAcceptenewclient:%s:%d",inet_ntoa(client.sin_addr),ntohs(client.sin_port));基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第2頁。

memset(c_Message,0,1024);//將原來的clientmessage歸零

continue;

}

c_Message[ret]='\0';

printf("\nReceived:%s\n",c_Message);

}

return0;

}基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第2頁。client:#include<WINSOCK2.H>

#include<stdio.h>#defineSERVER_ADDRESS"127.0.0.1"http://服務器端IP地址

#definePORT

6000

#defineMSGSIZE

1024

#pragmacomment(lib,"ws2_32.lib")

DWORDWINAPIFunThread(LPVOID);

SOCKET

sClient;

SOCKADDR_INserver;

intmain()

{

WSADATA

wsaData;

char

c_Message[MSGSIZE];

WSAStartup(0x0202,&wsaData);

sClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

memset(&server,0,sizeof(SOCKADDR_IN));

//先將保存地址的server置為全0

server.sin_family=PF_INET;

//聲明地址格式是TCP/IP地址格式

server.sin_port=htons(PORT);

//指明連接服務器的端口號

server.sin_addr.s_addr=inet_addr(SERVER_ADDRESS);

//指明連接服務器的IP地址

connect(sClient,(structsockaddr*)&server,sizeof(SOCKADDR_IN));//連到剛才指明的服務器上基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第3頁。HANDLEhThread=CreateThread(NULL,0,FunThread,0,0,0);

CloseHandle(hThread);基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第3頁。while(TRUE)

{

printf("ClientSend:");

gets(c_Message);

send(sClient,c_Message,strlen(c_Message),0);

if(!strcmp(c_Message,"exit"))//client自身退出

exit(1);

}

//釋放連接和進行結束工作

closesocket(sClient);

WSACleanup();

return0;

}DWORDWINAPIFunThread(LPVOID)

{

char

s_Message[MSGSIZE];

int

ret;

while(TRUE)

{

ret=recv(sClient,s_Message,MSGSIZE,0);

if(ret==SOCKET_ERROR)

{

printf("\nServerisclosed!\n");

exit(1);

}

s_Message[ret]='\0';

printf("\nReceived:%s\n",s_Message);

if(!strcmp(s_Message,"exit"))//server讓client退出

exit(1);

}

return0;

}基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第4頁。程序在VC++6.0環(huán)境下編譯通過。先運行server端,再運行client,鏈接建立:基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第4頁。基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第5頁。

基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第5頁。基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第6頁。client和server可進行雙通信,可連續(xù)發(fā)送、接收;client可自行退出,也可由server強制退出,發(fā)送exit命令即可:基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第6頁。基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第7頁。

基于socket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第7頁?;趕ocket簡易聊天程序畢業(yè)設計(論文)全文共10頁,當前為第8頁。client退出后,server重新建立監(jiān)聽,有新的client運行時,再次建立新的連接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論