㈠ c語言套接字編程實現通信
我知道Linux的,但估計你想要的不是這個。
另:套接字就是 Socket,是網路連接的一種方式,基於TCP、UDP之類的
㈡ 如何用C語言編寫一個簡單的聊天室程序
這樣:
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <pthread.h>
#define MAXLINE 100;
void *threadsend(void *vargp);
void *threadrecv(void *vargp);
int main()
{
int *clientfdp;
clientfdp = (int *)malloc(sizeof(int));
*clientfdp = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in serveraddr;
struct hostent *hp;
bzero((char *)&serveraddr,sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(15636);
serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
if(connect(*clientfdp,(struct sockaddr *)&serveraddr,sizeof(serveraddr)) < 0){
printf("connect error ");
exit(1);
}
pthread_t tid1,tid2;
printf("connected ");
while(1){
pthread_create(&tid1,NULL,threadsend,clientfdp);
pthread_create(&tid2,NULL,threadrecv,clientfdp);
}
return EXIT_SUCCESS;
}
void *threadsend(void * vargp)
{
//pthread_t tid2;
int connfd = *((int *)vargp);
int idata;
char temp[100];
while(1){
//printf("me: ");
fgets(temp,100,stdin);
send(connfd,temp,100,0);
printf(" client send OK ");
}
printf("client send ");
return NULL;
}
void *threadrecv(void *vargp)
{
char temp[100];
int connfd = *((int *)vargp);
while(1){
int idata = 0;
idata = recv(connfd,temp,100,0);
if(idata > 0){
printf("server : %s ",temp);
}
}
return NULL;
}
(2)c語言套接字編程教程擴展閱讀:
注意事項
linux下編譯多線程代碼時,shell提示找不到 pthread_create函數,原因是 pthread.h不是linux系統默認載入的庫文件,應該使用類似如下gcc命令進行編譯:
gcc echoserver.c -lpthread -o echoserver
只要注意 -lpthread參數就可以了。
㈢ 如何用c語言編寫socket套接字
可以去這里看看
網上的資源還是很多的
我機器上也有很多
要是需要可以給你參考
http://blog.csdn.net/fengyv/archive/2006/04/12/659980.aspx
http://www.21control.com/RTOS/Linux/200512/RTOS_20051212221308.html
㈣ 自學C語言教程
沒有基礎可以入門,通過努力可以達到初、中級程序員的程度,但再往上走,就比較困難了。後面需要不少演算法、英文和數學知識。
教程的話可以參考下面兩本教程:
譚浩強:《C語言程序設計》
李銘城 黃中豪 陳宇芬:《資料結構 C》
英文的話,進入初級之前都不怎麼需要。但是進入中級後,需要讀一些英文資料。不過現在翻譯比較厲害,絕大部分的資料都有翻譯。但是要進入高級,就必須要學習英文了,因為最新最核心的資料都是英文的,翻譯的往往都會有錯誤。
另外數學在早期影響不大,但是進入中級後就必須要了。因為估算演算法時間復雜度、空間復雜度、圖、樹等等,都涉及不少數學知識。當然如果只是做簡單應用或者驅動的話,這方面要求就不會太高。
最後給一個學習大概的路線圖:
入門級的學習,只要能夠掌握:代碼三大結構(循環、分支、順序)、流程圖、C語言關鍵字和語法、輸入輸出、文件操作、套接字操作。就算是初級滿級了。
初級程序員:數據結構和演算法(排序,查找)、了解軟體開發模型(瀑布模型、敏捷模型、原型模型等等)、了解UML、系統常用API、網路通信、編譯和SDK環境搭建
中級程序員:設計模式、多線程編程、網路通信(伺服器、客戶端)、面向對象編程、掌握UML、系統網路/文件/互斥/線程/事件/安全API、STL、相關法律法規、知道一些常用軟體架構(MVC等)
㈤ Windows網路編程案例教程的套接字摘要
套接字屏蔽了從應用程序直接訪問傳輸層的復雜性。在日常生活中兩個人打電話,那個電話機就可以理解為是通話的介面,只要會用電話機,甭管電話間是如何復雜連接的,通話隨時隨地可以輕松完成。套接字就像那個電話機,編程者只要掌握了套接字技術(類似電話機的使用方法),那麼網路編程(就像打電話)工作就非常簡單了。至於套接字與下層的關系,則由操作系統來實現和封裝,因此,套接字簡化網路編程。
對多數操作系統而言,應用程序和操作系統程序是在不同的保護模式下運行的。應用程序一般不能直接訪問操作系統內部的資源,這樣可以避免應用程序非法破壞操作系統的運行。為此,操作系統需要提供應用程序編程介面(Application Programming Interface,API)給應用程序,使其能夠利用操作系統提供的服務。對於網路操作系統,需要為網路應用程序提供網路編程介面實現網路通信。目前多數操作系統提供了套接字(Socket)介面作為網路編程介面。
Berkeley套接字(BSD套接字)是4.2 BSD Unix操作系統(於1983發布)提供的一套應用程序編程介面,是一個用C語言寫成的網路應用程序開發庫,主要用於實現網間進程通信。Berkeley套接字後來成為其它現代操作系統參照的事實工業標准。Windows操作系統在後來的BSD4.3版基礎上實現了自己的Windows Socket(又稱WinSock)套接字編程介面。
㈥ 在windows下用C語言如何實現socket網路編程,需要用到哪些頭文件或者庫
需要用到的頭文件包含:
#include <winsock2.h>
#include <windows.h>
與Linux環境下socket編程相比,windows環境多了一個步驟:啟動或者初始化winsock庫
Winsock,一種標准API,一種網路編程介面,用於兩個或多個應用程序(或進程)之間通過網路進行數據通信。具有兩個版本:
Winsock 1:
Windows CE平台支持。
頭文件:WinSock.h
庫:wsock32.lib
Winsock 2:
部分平台如Windows CE貌似不支持。通過前綴WSA可以區別於Winsock 1版本。個別函數如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都屬於Winsock 1.1規范的函數;
頭文件:WinSock2.h
庫:ws2_32.lib
mswsock.h用於編程擴展,使用時必須鏈接mswsock.dll
(6)c語言套接字編程教程擴展閱讀
winsock庫的載入與卸載:
載入:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
載入成功,返回值為0。
WORD wVersionRequested:載入的winsock版本,使用宏MAKEWORD(x, y),x表示高位元組,y表示低位元組。然而使用時MAKEWORD(2, 2)。高位元組與低位元組相同~~
LPWSADATA lpWSAData:WSADATA結構的指針,傳入參數後,系統幫助我們填充版本信息。有興趣的可以看看結構體內容,不過基本用不著。
卸載:int WSACleanup(void);比起載入,卸載的函數真是輕松愉快。
㈦ C語言Socket編程問題(互相通信)
客戶端與伺服器建立連接
客戶端調用connect函數時,已經知道伺服器的IP地址以及埠號
伺服器中accept返回的套接字中,包含客戶端的IP地址以及埠號
建立的連接是相互的,所以可以互通消息。
㈧ C語言編寫SOCKET基本套接字的使用,出錯了```高手指點下```
除了包含頭文件還要加入socket庫。
加上這一句就行了!
#pragma comment(lib,"WS2_32.lib");
㈨ c語言 多線程套接字編程
你ip的初始值是多少?
有沒有重定向過標准輸入?
另一個線程是否也阻塞在讀標准輸入上?
㈩ 關於 c語言 套接字 的 教程或書
應該沒有專門講套接字的書的吧,想深入了解的話請看TCP/IP詳解卷一卷二卷三,得有心理准備哦,那內容可是相當的多。